【问题标题】:"This operation requires IIS integrated pipeline mode."“此操作需要IIS集成管道模式。”
【发布时间】:2014-03-10 22:59:56
【问题描述】:

我有一个 Web 应用程序正在 Windows 8.1、.NET 4.5.1、IIS 8.5(在 Integrated AppPool 下)、Visual Studio 2013 上通过包含 ASP.NET Identity、Owin 等的默认模板开发,并且在本地它可以工作很好。

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

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

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

堆栈跟踪:

[PlatformNotSupportedException: This operation requires IIS integrated pipeline mode.]
  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 什么的吗?

【问题讨论】:

  • 堆栈跟踪中还有其他内容吗? HttpApplication.ExecuteStep 下面没有框架?
  • 不,只有 .net 框架版本号的页脚:(版本信息:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.0.30319.18067)
  • :( 确实。奇怪的问题:如果您使用 Empty Web Application Project 模板并添加单个 Default.aspx 行 和 ,它在您的生产服务器上输出什么?可能运行时错误地识别了正在使用的 IIS 模式。
  • 返回 False,7.5。但它返回了我为管道设置的错误......我设置经典它是错误的,我设置集成它也是错误的。我把问题转发给了楼主。我现在正在等待回复。
  • 查看下面的链接,它对很多人都有效:stackoverflow.com/a/5918197/1912383

标签: asp.net iis integrated-pipeline-mode


【解决方案1】:

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

  1. 打开 IIS 管理器

  2. 应用程序池

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

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

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

【讨论】:

  • 如果我的网站是在虚拟主机上发布的,我该如何更改?
  • 它不起作用。
【解决方案2】:

尝试使用Response.AddHeader 而不是Response.Headers.Add()

【讨论】:

  • 如果异常是由添加标头引起的,则此答案有效。使用 MSVS 2010 和 Casinni 进行测试(我认为)。
  • 在哪里可以找到 Response.AddHeader
  • @drexdrex - 有响应对象吗?如果你尝试 Response.AddHeader("X-billpg", "is so very nice."); 会发生什么? ?
  • 我现在不知道为什么要在哪里找到 Response.AddHeader 将其更改为 Response.Headers.Add(),顺便说一下我正在使用 asp.net mvc5
  • 我不明白要更改什么代码,因为问题中的堆栈跟踪仅显示标准 MS 库代码。
【解决方案3】:

我遇到了同样的问题,我通过以下方式解决了它:

  1. 在 Visual Studio 中,选择“项目属性”。

  2. 选择“Web”选项卡。

  3. 选择“使用本地 IIS Web 服务器”。

  4. 勾选“使用 IIS Express”

【讨论】:

    【解决方案4】:

    此错误表示您部署的应用程序所属的应用程序池未处于集成模式。

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

    【讨论】:

      【解决方案5】:

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

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

      这解决了我的问题。

      【讨论】:

      • 您在哪里更改了属性?我在 VS2013 上,在项目属性中有一个“Web”选项卡,但没有“托管管道”属性。
      • 在这里找到了我上面问题的答案:stackoverflow.com/a/9023297/837507
      • 我将属性设置从“集成”更改为“经典”并返回“集成”,然后保存更改并恢复工作。
      • 点击项目链接后按 F4。
      【解决方案6】:

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

      除了指导读者将管道从经典模式更改为集成模式之外,我进行了很多搜索,找不到任何东西,我已经没有运气了..

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

      当我问他们为解决问题做了什么时,他们的回答有点“机密”,因为他们说:

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

      问题都出在我的主机上。

      * 更新:正如 Ben 在 cmets 中所述

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

      不再有效,现在是:

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

      【讨论】:

      【解决方案7】:

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

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

      也许对你有帮助。

      【讨论】:

        【解决方案8】:

        对于 Visual Studio 2012调试该错误累积

        网站菜单 -> 使用 IIS Express 为我做的

        【讨论】:

          【解决方案9】:

          使用VS2012的人

          转到项目 > 属性 > Web

          勾选使用本地 IIS Web 服务器

          检查使用 IIS Express

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

          【讨论】:

            【解决方案10】:

            GitHub 解决方案通过添加解决了我的问题

            • Global.asax.cs:设置 AntiForgeryConfig.SuppressXFrameOptionsHeader = 真的;在 Application_Start 中:
            • 在 Application_BeginRequest 中手动添加 X-Frame-Options 标头

            【讨论】:

              【解决方案11】:

              在您的项目中按 F4 以显示属性窗口。 然后改变流水线模式

              【讨论】:

              • 超级好用。谢谢:)
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2010-09-16
              • 2023-03-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多