“此操作需要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:此操作需要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或我:)?

回答(9)

2 years ago

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

  • 打开IIS管理器

  • 应用程序池

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

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

  • 管理管道模式更改为集成

2 years ago

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

2 years ago

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

  • 转到visual studio Project properties .

  • 选择 Web 标签 .

  • 选择 Use Local IIS Web server

  • 检查 Use IIS Express

2 years ago

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

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

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

Solution:

  • 创建一个新的应用程序池,选择了.NET 4版本,托管管道模式为 Integrated .

  • 将应用程序的应用程序池更改为上面创建的应用程序池,然后立即尝试 .

有用!

2 years ago

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

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

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

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

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

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

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

更新:正如Ben在评论中所述<%:System.Web.Hosting.HttpRuntime.UsingIntegratedPipeline%>和<%:System.Web.Hosting.HttpRuntime.IISVersion%>不再有效,它们现在是:<%: System.Web.HttpRuntime.UsingIntegratedPipeline%>和<%:System.Web.HttpRuntime.IISVersion%>

2 years ago

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

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

这解决了我的问题 .

2 years ago

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

  • 右键单击项目的根文件夹 .

  • 转到属性

  • 单击左侧菜单中的web

  • 更改当前端口http://localhost:####/

  • 单击创建虚拟目录

  • 保存更改(ctrl s)

可能对你有帮助 .

2 years ago

对于 Visual Studio 2012debugging 该错误累计

Website Menu -> Use IIS Express 为我做了

2 years ago

那些使用VS2012的人

转到项目>属性> Web检查使用本地IIS Web服务器选中“使用IIS Express”

项目网址http://localhost:PORT/