C# HttpContext.Current.Request在生产中为空
在我的WCF应用程序中,我有一个Global.asax.cs,其中包含以下内容以检索基本URL:C# HttpContext.Current.Request在生产中为空,c#,.net,wcf,C#,.net,Wcf,在我的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); } 在我的开
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
有人知道为什么会发生这种情况吗?这可能是因为在开发过程中,您的应用程序池处于“经典”模式(或IIS 6-) 在生产中,您的应用程序池设置为“集成”。集成不允许您访问
应用程序启动
中的请求
对象
经典行为允许这样做,因为在经典模式下启动ASP.NET应用程序的唯一方法是第一个请求。在集成模式下,应用程序可以通过请求以外的其他方式启动(例如应用程序预热)
您可以找到有关原因以及如何解决此问题的更多信息
最终,您有两个选择:
请求
对象将评论转化为回答:
您不应该尝试访问应用程序启动事件中的当前请求。是的,生产应用程序托管在IIS上。为什么要尝试在应用程序启动事件中使用当前请求?应用程序可能由请求启动,也可能不由请求启动。@liho1eye。啊!当然!我现在觉得自己很渺小,对不起,我应该删除这个帖子吗?@liho1ye:请添加答案,这样我就可以给你评分了。当然,尽管看起来vcsjones的答案更完整。