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

woo*_*oer 55 asp.net iis integrated-pipeline-mode

我有一个在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:此操作需要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 application)+246 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.PrepareInitialContext(HttpApplication application)+15 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContextStage.BeginEvent (Object 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或我:)?

Moh*_*eza 54

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

  1. 打开IIS管理器

  2. 应用程序池

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

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

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


bil*_*lpg 50

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

  • 我在哪里可以找到Response.AddHeader (2认同)

kak*_*kon 32

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

  1. 去视觉工作室__CODE__.

  2. 选择__CODE__Tab.

  3. 选择 __CODE__

  4. 校验 __CODE__


小智 8

所有这些答案对我都不起作用.

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

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

解:

  1. 创建一个新的应用程序池,选择.NET 4版本,Managed Pipeline模式为Integrated.
  2. 将应用程序的应用程序池更改为上面创建的应用程序池,然后立即尝试.

有用!


woo*_*oer 5

我不好!你是对的莱克斯,我必须这样做,是不是说明我已经在注释中解决了这个问题..

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

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

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

当我问他们为解决问题所采取的措施时,他们的asnwer有点"分类",因为他们说:

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

我微笑着走了过去.所以问题出在我的主人身上.感谢所有的答案.

更新:正如Ben在评论中所述

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

不再有效,他们现在:

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

  • [System.Web.Hosting](https://msdn.microsoft.com/zh-cn/library/system.web.hosting(v = vs.110).aspx)命名空间似乎没有[HttpRuntime ](https://msdn.microsoft.com/zh-CN/library/system.web.httpruntime(v = vs.110).aspx)类。 (2认同)

Tyr*_*ley 5

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

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

这解决了我的问题。