簡體   English   中英

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

[英]“This operation requires IIS integrated pipeline mode.”

我有一個 Web 應用程序正在 Windows 8.1、.NET 4.5.1、IIS 8.5(在集成 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 之類的嗎?

您的應用程序池處於經典模式,但您的應用程序需要集成模式才能觸發。 將其更改為集成模式:

  1. 打開 IIS 管理器

  2. 應用程序池

  3. 選擇您的應用在其中運行的池

  4. 在右側面板中選擇基本設置

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

嘗試使用Response.AddHeader而不是Response.Headers.Add()

我遇到了同樣的問題,我通過以下方式解決了它:

  1. 在 Visual Studio 中,選擇“項目屬性”。

  2. 選擇“Web”選項卡。

  3. 選擇“使用本地 IIS Web 服務器”。

  4. 勾選“使用 IIS Express”

此錯誤表示您部署的應用程序所屬的應用程序池未處於集成模式。

  1. 創建一個新的應用程序池,選擇 .NET 4 版本,托管管道模式為Integrated
  2. 將您的應用程序的應用程序池更改為上面創建的應用程序池,然后立即嘗試。

這是一個奇怪的問題,因為我的主機 IIS 在它已經處於該模式時不應該抱怨它需要集成管道模式,正如我在我的問題中所述:

我搜索了很多東西,除了指導讀者將管道從經典模式更改為集成模式之外,找不到任何東西,而我已經沒有運氣了

使用李維斯的指示,我將<%: System.Web.Hosting.HttpRuntime.UsingIntegratedPipeline %><%: System.Web.Hosting.HttpRuntime.IISVersion %> * 放在一個空的 aspx 頁面上,並告訴我的主機發生了什么並詢問他們修復問題並使用我上傳的頁面確認問題......我經常檢查頁面狀態是否發生變化,我可以看到他們努力解決了3-4個小時......

當我問他們為解決問題做了什么時,他們的回答有點“機密”,因為他們說:

我們的團隊在服務器上進行了必要的更改

問題出在我的主人身上。

*更新:正如Ben在評論中所說

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

不再有效,它們現在是:

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

解決此問題的方法不在 IIS 中。 我試圖在 Visual Studio 中的 IIS Express 中運行我的應用程序。 我在網上搜索了一些文章,說要在 system.web 標簽中添加一個身份標簽。 這不是正確的方法。

我能夠解決這個問題的方法是單擊項目文件並轉到屬性。 在托管管道下,我將屬性值從經典更改為集成。

這解決了我的問題。

我通過以下步驟解決了這個問題:

  1. 右鍵單擊項目的根文件夾。
  2. 轉到屬性
  3. 點擊左側菜單中的網頁
  4. 更改當前端口http://localhost:####/
  5. 點擊創建虛擬目錄
  6. 保存更改 (ctrl+s)

可能對你有幫助。

對於Visual Studio 2012調試時產生的錯誤

網站菜單 -> 使用 IIS Express為我做了

正在使用 VS2012 的人

轉到項目 > 屬性 > Web

勾選使用本地 IIS Web 服務器

勾選使用 IIS Express

項目網址http://localhost:PORT/

GitHub解決方案通過添加為我解決了這個問題

  • Global.asax.cs: 設置 AntiForgeryConfig.SuppressXFrameOptionsHeader = true; 在 Application_Start 中:
  • 在 Application_BeginRequest 中手動添加 X-Frame-Options 標頭

在您的項目中按 F4 以打開屬性窗口。 然后改變管道模式

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM