ASP.NET 来自非请求工作线程的应用程序的 WebApi 基础 Uri

ASP.NET WebApi base Uri of the application from non-Request worker thread

我在 IIS 中有一个 ASP.NET WebApi 应用程序 运行。从 非请求后台工作者 线程中,我需要找出应用程序的 base Uri(例如,https://machineName:port/applicationName/)。

通常的建议不起作用,因为在 Application_Start() 方法中创建的工作线程的情况下,Request 对象为 null。

更新: 我正在将端口添加到特定于环境的 web.config 文件中,该文件在部署时合并(如@Kenneth 所建议)。

您可以使用 HostingEnvironment.ApplicationVirtualPath 属性.

它位于 System.Web 程序集的 System.Web.Hosting 命名空间中

这是 MSDN 参考:https://msdn.microsoft.com/en-us/library/system.web.hosting.hostingenvironment(v=vs.110).aspx

我会建议与@Kenneth 相同的解决方案。

否则,我猜你可以在 App Start 上获取值并将其捕获到内存中以备后用。