,試圖張貼在網站上一個字符串,我得到這個錯誤:服務器違反協議。第=我創建了一個程序ResponseStatusLine錯誤
gResponse = (HttpWebResponse)gRequest.GetResponse();
如何解決:
"The server committed a protocol violation. Section=ResponseStatusLine"
這行代碼後這個例外?
,試圖張貼在網站上一個字符串,我得到這個錯誤:服務器違反協議。第=我創建了一個程序ResponseStatusLine錯誤
gResponse = (HttpWebResponse)gRequest.GetResponse();
如何解決:
"The server committed a protocol violation. Section=ResponseStatusLine"
這行代碼後這個例外?
嘗試把這個在您的應用程序/ web.config文件:
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>
如果這不工作,你也可以嘗試KeepAlive
屬性設置爲false。
調試此方法(並確保導致問題的協議違規)的一種方法是使用Fiddler(Http Web Proxy)並查看是否發生相同的錯誤。如果沒有(即Fiddler爲你處理這個問題),那麼你應該可以使用UseUnsafeHeaderParsing標誌來修復它。
如果你正在尋找一種方法來設置這個值編程看到這裏的例子:http://o2platform.wordpress.com/2010/10/20/dealing-with-the-server-committed-a-protocol-violation-sectionresponsestatusline/
Fiddler確實解決了我有GET HTTP請求的問題。我們能看到小提琴手做了什麼嗎? – 2016-11-04 16:38:44
設定預期100繼續爲false,並減少插座空閒時間兩秒鐘解決了我的問題
ServicePointManager.Expect100Continue = false;
ServicePointManager. MaxServicePointIdleTime = 2000;
有時會出現此錯誤時UserAgent
請求參數爲空(在我的情況下,在github.com api中)。
設置此參數爲自定義非空字符串解決了我的問題。
啊,這是我需要的。謝謝。這裏是一個用戶代理的例子:http://stackoverflow.com/a/15144495/891976 – 2014-12-17 16:28:24
爲我工作:) – dbones 2015-05-09 00:33:01
一個快速線與'WebClient'在這裏使用http://stackoverflow.com/a/11841680/ 4795214 – 2016-07-19 09:42:31
在我的情況下,罪魁禍首返回一個No Content
響應,但同時定義響應正文。可能這個答案提醒我,也許其他人不要再返回一個NoContent
響應與身體再次。
此行爲與10.2.5 204無內容的HTTP specification它說的一致:
The 204 response MUST NOT include a message-body, and thus is always terminated by the first empty line after the header fields.
的解決方案中沒有爲我工作,所以我不得不使用Web客戶端,而不是HttpWebRequest和問題不再。
我需要使用的CookieContainer,所以我使用帕維爾·薩瓦拉在這個線程發佈的解決方案 - Using CookieContainer with WebClient class
只是刪除這條線「保護」:
私人只讀的CookieContainer集裝箱=新的CookieContainer( );
許多解決方案都提到解決方法,但不涉及錯誤的實際原因。
此錯誤的一個可能原因是,如果網絡服務器使用ASCII
或ISO-8859-1
以外的編碼輸出標頭響應部分。如果Response-Phrase
包含擴展的拉丁字符,則使用ISO-8859-1
的原因是。
此錯誤的另一個可能原因是,如果網絡服務器使用輸出字節順序標記(BOM)的UTF-8
。例如,缺省常數Encoding.UTF8
輸出物料清單,很容易忘記這一點。該網頁將在Firefox和Chrome中正常工作,但HttpWebRequest
會炸彈:)。一個快速解決方案是將網絡服務器更改爲使用不輸出BOM的UTF-8編碼,例如(只要Response-Phrase
只包含ASCII字符,但確實應該使用ASCII
或ISO-8859-1
作爲標題,然後使用UTF-8
或其他編碼作爲響應)。
這是最好的迴應。它解釋了爲什麼Web服務器行爲不當。謝謝! (由於HttpListener的部署問題,我必須使用套接字模擬Web服務器。) – 2015-10-16 15:11:37
當我在本地機器上運行Skype時,發生這種情況。一旦我結束,異常就消失了。
有同樣的問題。原來是Skype。它非常不幸,無法提供正確的信息。 – 2015-06-24 17:31:20
您實際上並不需要關閉Skype,我在下面添加了一個答案,以說明如何在不關閉Skype的情況下解決此問題。 – 2016-06-02 15:44:46
在我的情況下,IIS沒有必要的權限來訪問相關的ASPX路徑。
我給IIS用戶權限的相關目錄,一切都很好。
查看你的代碼,找到你是否設置NULL或空值的頭。
我們嘗試過的第一件事是禁用IIS的動態內容壓縮,解決了錯誤,但錯誤並未引起服務器端,只有一個客戶端受此影響。
在客戶端,我們卸載了VPN客戶端,重置了Internet設置,然後重新安裝了VPN客戶端。這個錯誤也可能是以前的防病毒軟件引起的。然後我們啓用動態內容壓縮,現在它可以像以前一樣正常工作。
錯誤出現在連接到Web服務和TFS的自定義應用程序中。
我試圖從代理後面訪問Last.fm Rest API,並得到這個着名的錯誤。
The server committed a protocol violation. Section=ResponseStatusLine
嘗試一些解決方法之後,只有這兩個工作對我來說
HttpWebRequest HttpRequestObj = WebRequest.Create(BaseUrl) as HttpWebRequest;
HttpRequestObj.ProtocolVersion = HttpVersion.Version10;
和
HttpWebRequest HttpRequestObj = WebRequest.Create(BaseUrl) as HttpWebRequest;
HttpRequestObj.ServicePoint.Expect100Continue = false;
的Skype是我的問題的主要原因:
此錯誤通常發生在您將Visual Studio設置爲調試存在時ng web應用程序在IIS中運行而不是內置在ASP.NET調試Web服務器。 IIS默認偵聽端口80上的Web請求。在這種情況下,另一個應用程序已經偵聽端口80上的請求。通常情況下,有問題的應用程序是Skype,默認情況下,Skype會在安裝時監聽端口80和443。 Skype已佔用端口80.所以IIS無法啓動。
要解決此問題請按照下列步驟:
的Skype - >工具 - >選項 - >高級 - >連接:
取消選中 「使用端口80和443的傳入連接的替代品」。
而且正如下面指出的執行一次IIS重設。
並記得在完成後重新啓動IIS – 2016-06-14 13:15:12
我開始從我的PHP JSON/REST服務收到此錯誤
我開始relativley罕見POST上傳得到的錯誤我加ob_start("ob_gzhandler")
最經常訪問的讓PHP腳本後
我能夠使用只是ob_start()
,一切都很好。
我有6個網站拋出這個錯誤。設置useUnsafeHeaderParsing修復了一個鏈接,但將KeepAlive = false設置爲全部6. – 2012-09-17 18:15:04
只設置KeepAlive = false爲我創造了奇蹟。 – 2013-03-22 17:16:08
對於非web應用程序,可以在App.copnfig的根標記內放置相同的內容(例如,我修復了WPF應用程序 - 謝謝!)。 –
2013-08-20 15:39:53