1

ASP.NET では、特定の Uri を指すリンクを作成し、このリンクを電子メールでユーザーに送信したいと思いますhttp://www.BlaBla.com/CustomerPortal/Order/9876。Uri の 2 番目の部分を/CustomerPortal/Order/9876コード ビハインドで動的に作成できます。http://www.BlaBla.com私の質問は次のとおりです。アプリケーションでハードコーディングせずにベース Uri を作成するにはどうすればよいですか? 基本的に私は次のようなものが欲しいです:

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 を教えてください」と尋ねる方法はありますか? それとも他の方法ですか?

前もって感謝します!

4

3 に答える 3

2

このようなもの:

HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpContext.Current.Request.ApplicationPath.TrimEnd('/')
于 2010-06-12T11:23:08.177 に答える
2

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

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

これらは、同じサイトにアクセスするためのいくつかの方法にすぎませlocalhostん....どれですか? 同じ問題が本番環境に存在し、数十のドメインまたは IP が同じ Web アプリケーションを指している可能性があり、それを区別するためにホスト ヘッダーを使用するか、何も使用しない可能性があります。要点は、リクエストのコンテキスト外では、サイトがどの URL を使用するかを実際には認識していないということです。

電子メールを送信するときにリクエストのコンテキストにいる場合は、 を見てください。これHttpRequest.UrlUriタイプであり、使用可能なプロパティはこちらで確認できます

次のようなことができます。

var host = HttpContext.Current.Url.Host;
//generate your link using the host
于 2010-06-12T11:27:59.040 に答える
1

に配置するのはどうですかweb.config

<configuration>
    <appSettings>
       <add key="SendingUrlBase" value="http://www.BlaBla.com"/>
于 2010-06-12T11:02:02.377 に答える