ASP.NET WebApi基于来自非请求工作线程

时间:2016-01-13 21:49:40

标签: c# asp.net asp.net-mvc asp.net-web-api asp.net-web-api2

我在IIS中运行了 ASP.NET WebApi 应用程序。在非请求后台工作者主题中,我需要找出应用程序的基础Uri (例如https://machineName:port/applicationName/)。

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

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

2 个答案:

答案 0 :(得分:3)

您可以使用HostingEnvironment.ApplicationVirtualPath属性。

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

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

答案 1 :(得分:0)

我会建议和@Kenneth一样的解决方案。

否则,我猜你可以抓住App Start上的值并将其捕获到内存中供以后使用。