我需要找出IIS 7.5+中托管的IIS应用程序的基URI,就在应用程序启动之后,但在任何客户端请求到达它之前。我需要这样做的场景如下:通过一个计时器执行定期检查,该计时器独立于用户请求运行,并与应用程序启动(相同的过程)一起触发;如果此检查通过某些条件,一些注册用户将收到一封包含指向我的web应用程序的超链接的电子邮件。现在,我不想在任何地方硬编码这个链接,而是从web应用程序本身动态获取它。从客户端请求的上下文中找出它,然后将其缓存到内存中是很简单的,但是,正如您可以想象的那样,计时器可能会在任何请求到达服务器之前停止。
那么,我如何正确地确定应用程序的基URI呢?我认为最合适的地方应该是Global.asax.cs文件,在web应用程序启动时,但我找不到任何看起来有帮助的东西。
发布于 2013-06-07 22:29:42
给定一个完整的URL,比如"http://mydomain.com/MyApplication/Controller/Action",您可以从System.Web.Hosting.HostingEnvironment.ApplicationHost对象中获取其中的一些信息。您可以获得以下内容:
但是,在实际请求到来之前,您将无法获取域名。这是因为IIS网站可以接受来自许多不同域的请求,其中一些域只能通过DNS获知,并且从未在任何地方配置过。
例如,您的网站可以同时响应mydomain.com和www.mydomain.com。哪一个是你想放在你的链接中的正确的?
您可以将IIS网站配置为仅接受请求特定主机但无法从ASP.NET应用程序检索的连接。
https://stackoverflow.com/questions/16986168
复制相似问题