asp.net - 在启动期间获取 Web 应用程序的 URI

标签 asp.net asp.net-mvc iis asp.net-web-api

我需要找出 IIS 7.5+ 中托管的 ASP.NET Web API 应用程序的基本 URI,在应用程序启动之后,但在任何客户端请求可能到达它之前。我需要这样做的场景如下:通过一个独立于用户请求运行的计时器执行定期检查,该计时器与应用程序启动(同一进程)一起触发;如果此检查通过某些条件,某些注册用户将收到一封电子邮件,其中包含指向我的 Web 应用程序的超链接。现在,我不想在任何地方对该链接进行硬编码,而是从 Web 应用程序本身动态获取它。从客户端请求的上下文中找出它然后将其缓存在内存中很简单,但是,正如您想象的那样,计时器可能会在任何请求到达服务器之前关闭。

我如何才能正确确定应用程序的基本 URI?我在想最合适的地方是 Global.asax.cs文件,在网络应用程序启动期间,但我找不到任何看起来有用的东西。

最佳答案

给定一个完整的 URL,例如“http://mydomain.com/MyApplication/Controller/Action”,您可以从 System.Web.Hosting.HostingEnvironment.ApplicationHost 中获取一些此类信息。目的。您可以获得以下信息:

  • ApplicationVirtualPath -> "/MyApplication"
  • 站点名称 =>“默认网站”

  • 但是,在实际请求到来之前,您将无法获得域名。这是因为 IIS 网站可以接受对许多不同域的请求,其中一些域只能通过 DNS 知道并且从未在任何地方配置过。

    例如,您的网站可以同时响应 mydomain.comwww.mydomain.com .您想放入链接中的哪个是正确的?

    您可以将 IIS 网站配置为仅接受请求特定主机但无法从 ASP.NET 应用程序检索的连接。

    关于asp.net - 在启动期间获取 Web 应用程序的 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16986168/

    相关文章:

    c# - MVC路由静态文件

    jquery - 每行多列的 DropDownList

    iis - IIS 后面的 HTTP 服务器 : pass authentication headers

    javascript - 直接在 HTTP 响应中执行 javascript

    c# - 将 UserControl 中的事件添加到嵌套 UserControl 中的按钮

    javascript - 通过 Ajax 下载生成的 CSV 文件

    asp.net - 无法初始化提供程序。 MYSQL 中缺少或不正确的模式

    c# - .NET Core 2.0 MVC odd 404 on controller methods only when deployed to IIS

    iis - Web 服务作为另一个受证书保护的服务的客户端 - 第一次调用返回 403,第二次调用成功

    javascript - 如何使用$.ajax?当我使用 Its not hitting my controller Action 时