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 上获取值并将其捕获到内存中以备后用。
我在 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 上获取值并将其捕获到内存中以备后用。