The server committed a protocol violation. Section=ResponseStatusLine in c#

前端 未结 2 818
半阙折子戏
半阙折子戏 2021-01-24 04:35

I have spent a whole day trying to resolve this. I have a custom webserver and requests to it from Chrome or POSTman ReST client work fine. As soon a s I use webclient or httpw

相关标签:
2条回答
  • 2021-01-24 05:18

    I had the same issue and I solved it using the following method. I created a custom web client that overrides the GetWebRequestMethod.

      class CustomWebClient : WebClient
    {
        /// <summary>
        /// Returns a <see cref="T:System.Net.WebRequest" /> object for the specified resource.
        /// </summary>
        /// <param name="address">A <see cref="T:System.Uri" /> that identifies the resource to request.</param>
        /// <returns>
        /// A new <see cref="T:System.Net.WebRequest" /> object for the specified resource.
        /// </returns>
        protected override WebRequest GetWebRequest(Uri address)
        {
            WebRequest request = base.GetWebRequest(address);
            if (request is HttpWebRequest)
            {
                (request as HttpWebRequest).KeepAlive = false;
            }
            return request;
        }
    }
    

    Then I made the request in the normal way like this

    using (CustomWebClient client = new CustomWebClient())
            {
                client.Headers[HttpRequestHeader.Authorization] = "Basic " + base64String;
                responseData = client.DownloadData(baseUri);
            }
    
    0 讨论(0)
  • 2021-01-24 05:32

    I struggled with that issue for a long time, and eventually the problem was a custom header that I added to IIS... I copied the value from somewhere and it contained {cr}:

    Open IIS Manager -> go to the web site -> on content view, choose "Response Headers".

    check the custom headers on IIS, remove headers if they are not needed, and also see if a header has a malformed value.

    0 讨论(0)
提交回复
热议问题