Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 请求在此上下文中不可用->;在Global.asax中->;什么是替换_C#_Asp.net_Request_Global Asax - Fatal编程技术网

C# 请求在此上下文中不可用->;在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对象。对于您的场景,您可以

以下行在global.asax中出错的原因:

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。更多信息

以下是您的选择:

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

基本上,如果您碰巧正在访问中的请求上下文 应用程序启动时,您有两个选择:

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

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