2016-12-02 86 views
1

我有一個奇怪的問題,我試圖追查。c#Identity Server錯誤請求 - 請求太長

如果我使用自簽名證書將我的客戶端和Identity Server部署到Azure,那麼代碼將工作。

我現在已將其移至我們的UAT環境,身份服務器配置爲使用購買的證書。此證書已爲單個域提供。 identity.mydomain.com

客戶端擁有此證書的密碼,因此它可以執行所需的操作。

當我瀏覽到身份服務器時,我可以登錄到管理部分,以便它們都能正常運行。如果我瀏覽到客戶端,它會重定向到可以登錄的身份服務。但是,只要我登錄並重定向到我的網站,我會收到以下錯誤信息;

Bad Request - Request Too Long 

HTTP Error 400. The size of the request headers is too long. 

看着餅乾,我可以看到一個cookie的創建。我已刪除這些並重新啓動,但我仍然有同樣的問題。 如果我通過使用增加緩衝區的大小。

<httpRuntime maxRequestLength="2097151" executionTimeout="2097151"> 

然後,它的工作,但我擔心,我掩蓋了一個問題,而不是修復它。

有沒有其他人不得不這樣做,以獲得身份服務器在iis上工作?

+0

我剛剛搜索錯誤... https://support.microsoft.com/en-us/kb/2020943我看到該頁面上的解決方案。似乎與證書沒有任何關係。 – Botonomous

+0

我已經看到了,謝謝,我們沒有使用kerberos或AD。不過,奇怪的是,使用一臺完全乾淨的機器,我可以按照我的預期登錄。雖然其他一直在這個問題上工作一天或兩天的機器都無法工作。在做更多的閱讀之後,我傾向於認爲它可能是一個cookie問題。 – Matt

回答

1

我最近有這個問題。解決方案是降級使用的NuGet包Microsoft.Owin.Security.OpenIdConnect。我正在使用3.0.1。你必須降級到3.0.0。這是Owin/Katana中間件的問題。該問題的描述可以發現here。請注意,該頁面指出瞭如何解決庫中的實際問題。我沒有嘗試過,它也可以工作,值得嘗試。

請注意,您必須在首次重新部署修補程序時清除Cookie。作爲臨時修復,您可以隨時清除您的Cookie,然後再次訪問該網站。然而,在某些情況下,它會始終在Cookie中粘貼一堆隨機數字符串。類似的問題可以在here找到。

+0

謝謝,我會試試這個。 – Matt

+0

雖然奇怪,它間歇性地工作。一個用戶可以隨時使用chrome工作,但永遠不會。 – Matt

+0

我假設你正在引用的'Microsoft.Owin.Security.OpenIdConnect' Nuget包在客戶端應用程序中?我的客戶端應用程序是在1.1.2運行時的ASP.NET Core中開發的,而且我遇到同樣的問題 – LP13