在我的WCF应用程序中,我有一个类似这样的Global.asax.cs来检索基本URL:
protected void Application_Start(object sender, EventArgs e)
{
string baseURL = System.Web.HttpContext.Current.Request.Url.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped);
}
在我的开发框(localhost)中,它工作正常。但是当我将其推向生产时,System.Web.HttpContext.Current.Request
会返回null
。
任何人都知道为什么会发生这种情况?
答案 0 :(得分:8)
这可能是因为在开发过程中,您的应用程序池处于“经典”模式(或在IIS 6上)。
在制作中,您的应用程序池设置为“集成”。集成不允许您访问Request
中的Application_Start
对象。
经典行为允许这样做,因为在经典模式下启动ASP.NET应用程序的唯一方法是使用第一个请求。在集成模式下,应用程序可以通过除请求之外的其他方式启动(例如应用程序预热)。
您可以在IIS's Website上找到有关原因以及如何解决此问题的详细信息。
最终,您有两种选择:
Request
对象。答案 1 :(得分:4)
将评论移至答案:
您不应该尝试访问Application_Start
事件中的当前请求。