在我的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);
}
Run Code Online (Sandbox Code Playgroud)
在我的开发框(localhost)中它工作正常.但是,当我把它推到生产的System.Web.HttpContext.Current.Request回报null.
任何人都知道为什么会发生这种情况?
这可能是因为在开发过程中,您的应用程序池处于"经典"模式(或在IIS 6上).
在生产中,您的应用程序池设置为"集成".集成不允许您访问该Request对象Application_Start.
经典行为允许这样做,因为在经典模式下启动ASP.NET应用程序的唯一方法是使用第一个请求.在集成模式下,应用程序可以通过除请求之外的其他方式启动(例如应用程序预热).
您可以在IIS的网站上找到有关原因以及如何解决此问题的更多信息.
最终,您有两种选择:
Request在Application_Start中访问该对象.