完全に適格なハイパーリンクを動的にリソースに作成する方法は?

StackOverflow https://stackoverflow.com/questions/3028427

  •  26-09-2019
  •  | 
  •  

質問

ASP.NETでは、特定のURIを指すリンクを作成し、このリンクをユーザーにメールで送信したいと思います。たとえば http://www.BlaBla.com/CustomerPortal/Order/9876. 。 URIの第2部を作成できます /CustomerPortal/Order/9876 Code-Behindで動的に。私の質問は次のとおりです。ベースURIを作成するにはどうすればよいですか http://www.BlaBla.com 私のアプリケーションでハードコードすることなく?基本的に私は次のようなものが欲しいです:

http://localhost:1234/CustomerPortal/Order/9876 (on my development machine)
http://testserver/CustomerPortal/Order/9876 (on an internal test server)
http://www.BlaBla.com/CustomerPortal/Order/9876 (on the production server)

それでは、アプリケーションがどこで実行されているかをサーバーに尋ねる方法はありますか:「アプリケーションのベースURIを教えてください」?または他の方法はありますか?

前もって感謝します!

役に立ちましたか?

解決

それをに置くのはどうですか web.config

<configuration>
    <appSettings>
       <add key="SendingUrlBase" value="http://www.BlaBla.com"/>

他のヒント

このようなもの:

HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpContext.Current.Request.ApplicationPath.TrimEnd('/')

構成にキーを配置する必要があります。 なにか どこかで、Webアプリケーションについて考えるとき、それは実際にURLに結び付けられていないからです。例えば:

http://localhost:1234/
http://yourMachineName:1234/
http://yourMachineName.domain.com:1234/
http://127.0.0.1:1234/

これらは、 同じ サイトオンサイト localhost....それはどちらですか?生産にも同じ問題が存在し、数十のドメインまたはIPSが同じWebアプリケーションを指す場合があり、ホストヘッダーを使用するか、それを区別するために何も使用できません。ポイントは、リクエストのコンテキストの外側で、サイトが実際にどのようなURLに合うかを実際に知らない場合、そこには1:1の関係がないことです。

もし、あんたが それは メールを送信するときのリクエストのコンテキストで、次をご覧ください HttpRequest.Url, 、 これは Uri タイプ、および ここで利用可能なプロパティを見ることができます.

あなたはこのようなことをすることができます:

var host = HttpContext.Current.Url.Host;
//generate your link using the host
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top