完全に適格なハイパーリンクを動的にリソースに作成する方法は?
質問
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