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
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);
}
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.