C# 请求在此上下文中不可用->;在Global.asax中->;什么是替换
以下行在global.asax中出错的原因:C# 请求在此上下文中不可用->;在Global.asax中->;什么是替换,c#,asp.net,request,global-asax,C#,Asp.net,Request,Global Asax,以下行在global.asax中出错的原因: string RelativeFilePath = "~/" + (AbsoluteFilePath.Replace(Request.ServerVariables["APPL_PHYSICAL_PATH"], String.Empty)).Replace("\\", "/"); 错误: 请求在此上下文中不可用 什么是替代品 如果您将应用程序托管在IIS7中,请提前感谢,应用程序启动中没有集成管道HttpContext对象。对于您的场景,您可以
string RelativeFilePath = "~/" + (AbsoluteFilePath.Replace(Request.ServerVariables["APPL_PHYSICAL_PATH"], String.Empty)).Replace("\\", "/");
错误:
请求在此上下文中不可用
什么是替代品
如果您将应用程序托管在IIS7中,请提前感谢,
应用程序启动中没有集成管道HttpContext对象。对于您的场景,您可以这样做:
string relativeFilePath = "~/" + AbsoluteFilePath
.Replace(HostingEnvironment.ApplicationPhysicalPath, String.Empty)
.Replace("\\", "/");
在IIS7或更高版本中,引入了集成管道,并更改了一些规则。无法在应用程序_Start中访问当前HttpContext。更多信息
以下是您的选择:
那么,这对你意味着什么?
基本上,如果您碰巧正在访问中的请求上下文
应用程序启动时,您有两个选择:
将应用程序代码更改为不使用请求上下文
(推荐)。
将应用程序移动到经典模式(不推荐)
因为您只是获取应用程序的物理路径,所以我坚持使用集成模式,只需更改代码即可