“此操作需要IIS集成管道模式。”

时间:2014-03-10 22:59:56

标签: asp.net iis

我在Windows 8.1,.net 4.5.1,IIS 8.5(在集成AppPool下),Visual Studio 2013上开发了一个Web应用程序,在默认模板上包含asp.net Identity,Owin等,本地工作正常

然后我将它上传到Windows Server 2008& IIS 7.5(集成管道)主机,我得到:

  

此操作需要IIS集成管道模式。

     

异常详情: System.PlatformNotSupportedException:This   操作需要IIS集成管道模式。

     

堆栈跟踪:

     

[PlatformNotSupportedException:此操作需要IIS   综合管道模式。]       System.Web.HttpResponse.get_Headers()+ 9687046       System.Web.HttpResponseWrapper.get_Headers()+ 9       Microsoft.Owin.Host.SystemWeb.OwinCallContext.CreateEnvironment()+309       Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.GetInitialEnvironment(HttpApplication的   申请)+246       Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.PrepareInitialContext(HttpApplication的   申请)+15       Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.BeginEvent(对象   sender,EventArgs e,AsyncCallback cb,Object extradata)+265       System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   285       System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)+155

我搜索了很多,除了指示读者将管道从经典模式更改为集成模式之外无法找到任何内容,而我已经没有运气了。

我该怎么做才能解决问题? “Microsoft.Owin.Host.SystemWeb”不是像IIS 7.5,还是服务器2008或我:)?

11 个答案:

答案 0 :(得分:49)

您的应用程序池处于经典模式,但您的应用程序需要集成模式才能触发。将其更改为集成模式:

  1. 打开IIS管理器

  2. 应用程序池

  3. 选择您的应用在其中运行的池

  4. 在右侧面板中选择基本设置

  5. 管理管道模式更改为集成

答案 1 :(得分:48)

对于从此处搜索此错误的任何人,请尝试使用Response.AddHeader代替Response.Headers.Add()

答案 2 :(得分:33)

我遇到了同样的问题,我解决了以下问题:

  1. 转到visual studio Project properties

  2. 选择Web标签。

  3. 选择Use Local IIS Web server

  4. 检查Use IIS Express

答案 3 :(得分:6)

所有这些答案对我都没有用。

问题详情: 当我尝试将我的应用程序(使用visual studio开发并使用由publish选项创建的文件夹结构部署)部署到远程服务器时,我得到了与问题中提到的相同的错误。

尝试上述解决方案后,此问题仍然存在。此错误表示已部署的应用程序所属的应用程序池未处于集成模式。

<强>解决方案:

  1. 创建一个新的应用程序池,选择.NET 4版本,托管管道模式为集成
  2. 将应用程序的应用程序池更改为上面创建的应用程序池,然后立即尝试。
  3. 有效!

答案 4 :(得分:5)

我的坏!,你是对的Lex我必须这样做,而不是说我已经在评论中解决了这个问题。

这是一个奇怪的问题,因为我的主机IIS不应该抱怨当它已经处于该模式时它需要集成管道模式,正如我在我的问题中所述:

  

我已经搜索了很多,除了指示读者将管道从经典模式更改为集成模式我已经没有运气时,无法找到任何内容。

使用Levi's指令,我将 <%: System.Web.Hosting.HttpRuntime.UsingIntegratedPipeline %> <%: System.Web.Hosting.HttpRuntime.IISVersion %> 放在一个空的aspx页面上,并告诉我的主机发生了什么并要求他们解决问题,并使用我上传的页面确认问题...我经常检查页面状态是否有变化,我可以看到他们努力解决了3-4个小时......

当我问他们为解决问题所做的工作时,他们的asnwer有点被分类了,因为他们说:

  

我们的团队在服务器上进行了必要的更改

我笑了笑,过去了。所以问题出在我的主人身上。谢谢你的所有答案。

  

更新:评论中所述的Ben

     
      
  1. <%: System.Web.Hosting.HttpRuntime.UsingIntegratedPipeline %>
  2.   
  3. <%: System.Web.Hosting.HttpRuntime.IISVersion %>
  4.         

    不再有效,现在是:

         
        
    1. <%: System.Web.HttpRuntime.UsingIntegratedPipeline %>
    2.   
    3. <%: System.Web.HttpRuntime.IISVersion %>
    4.   

答案 5 :(得分:5)

我通过以下步骤解决了这个问题:

  1. 右键单击项目的根文件夹。
  2. 转到属性
  3. 点击左侧菜单中的网页
  4. 更改当前端口http://localhost:####/
  5. 点击创建虚拟目录
  6. 保存更改(ctrl + s)
  7. 运行
  8. 可能对你有帮助。

答案 6 :(得分:4)

解决此问题的方法不在IIS中。我试图在Visual Studio中的IIS Express中运行我的应用程序。我搜索了网络,一些文章说要在system.web标签上添加一个标识标签。这不是正确的方法。

我能够解决此问题的方法是单击项目文件并转到属性。 在托管管道下,我将属性值从经典更改为集成。

这解决了我的问题。

答案 7 :(得分:4)

对于 Visual Studio 2012 ,而调试则产生错误

网站菜单 - &gt;使用IIS Express 为我做了

答案 8 :(得分:3)

使用VS2012的人

  

转到项目&gt;属性&gt;网络

     

选中“使用本地IIS Web服务器”

     

选中“使用IIS Express”

Project Url http://localhost:PORT/

答案 9 :(得分:1)

GitHub解决方案通过添加

为我解决了问题
  • Global.asax.cs:设置AntiForgeryConfig.SuppressXFrameOptionsHeader = 真正;在Application_Start中:
  • 在Application_BeginRequest中手动添加X-Frame-Options标头

答案 10 :(得分:0)

在项目的属性窗口中按F4。 然后更改管道模式

enter image description here