在ASP.NET中,我想创建一个指向特定Uri的链接,并通过电子邮件将此链接发送给用户,例如http://www.BlaBla.com/CustomerPortal/Order/9876
。我可以在代码隐藏中动态创建Uri /CustomerPortal/Order/9876
的第二部分。我的问题是:如何在我的应用程序中不对其进行硬编码时创建基础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”?或者其他任何方式?
提前谢谢!
答案 0 :(得分:2)
这样的事情:
HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpContext.Current.Request.ApplicationPath.TrimEnd('/')
答案 1 :(得分:2)
你必须在某个地方放置一个密钥,某些东西,因为当你考虑你的网络应用程序时,它并没有真正与URL绑定。例如:
http://localhost:1234/
http://yourMachineName:1234/
http://yourMachineName.domain.com:1234/
http://127.0.0.1:1234/
这些只是访问localhost
上的相同网站的几种方式....这是什么?生产中存在同样的问题,许多域或IP可能指向同一个Web应用程序,并且它使用主机头或者可能没有任何区别。关键是,当一个请求的上下文之外,该网站并不真正知道它所使用的URL,可能是任何东西,那里只有1:1的关系。
如果您在发送电子邮件时 在请求的上下文中,请查看HttpRequest.Url
,这是Uri
类型,{{3} }。
您可以这样做:
var host = HttpContext.Current.Url.Host;
//generate your link using the host
答案 2 :(得分:1)
如何将其放入web.config
<configuration>
<appSettings>
<add key="SendingUrlBase" value="http://www.BlaBla.com"/>