为什么以下行在global.asax中有错误:
string RelativeFilePath = "~/" + (AbsoluteFilePath.Replace(Request.ServerVariables["APPL_PHYSICAL_PATH"], String.Empty)).Replace("\\", "/");
错误:
请求在此上下文中不可用
什么是替代品?
提前致谢
答案 0 :(得分:2)
如果您在IIS7集成管道中托管您的应用程序,则Application_Start
中不提供HttpContext对象。对于您的方案,您可以这样做:
string relativeFilePath = "~/" + AbsoluteFilePath
.Replace(HostingEnvironment.ApplicationPhysicalPath, String.Empty)
.Replace("\\", "/");
答案 1 :(得分:0)
在IIS7或更高版本中,引入了集成管道,并且一些规则已更改。您无法访问Application_Start中的当前HttpContext。 Here's了解更多信息。
引用,这是您的选择:
那么,这对你意味着什么?
基本上,如果您正好在访问请求上下文中 Application_Start,您有两个选择:
将您的应用程序代码更改为不使用请求上下文 (推荐的)。 将应用程序移至经典模式(不推荐)。
由于您只是获取应用程序的物理路径,因此我坚持使用集成模式并只更改您的代码。