请求在此上下文中不可用 – >在Global.asax中 – >替换内容

为什么下面的行在global.asax中有错误:

string RelativeFilePath = "~/" + (AbsoluteFilePath.Replace(Request.ServerVariables["APPL_PHYSICAL_PATH"], String.Empty)).Replace("\\", "/"); 

错误:

在此上下文中不提供请求

什么是替代品?

提前致谢

如果您在IIS7集成管道中托管您的应用程序,则Application_Start中不提供HttpContext对象。 对于您的方案,您可以这样做:

 string relativeFilePath = "~/" + AbsoluteFilePath .Replace(HostingEnvironment.ApplicationPhysicalPath, String.Empty) .Replace("\\", "/"); 

在IIS7或更高版本中,引入了集成管道,并且一些规则已更改。 您无法访问Application_Start中的当前HttpContext。 这是更多信息。

要引用,这是您的选择:

那么,这对你意味着什么?

基本上,如果您恰好在Application_Start中访问请求上下文,则有两种选择:

将应用程序代码更改为不使用请求上下文(推荐)。 将应用程序移至经典模式(不推荐)。

由于您只是获取应用程序的物理路径,因此我坚持使用集成模式,只需更改代码即可。