C# 通过HTTPS调用REST API时出现500服务器错误

C# 通过HTTPS调用REST API时出现500服务器错误,c#,xml,rest,fiddler,dotnet-httpclient,C#,Xml,Rest,Fiddler,Dotnet Httpclient,我使用这段代码将XML发布到REST Web服务,但只是得到一个模糊的“500服务器错误”。如果我将同一个XML粘贴到Fiddler中,它就可以完美地工作,那么我做错了什么 using (var client = new HttpClient()) { var httpContent = new StringContent(doc.ToString(), Encoding.UTF8, "text/xml"); var response = client.PostAsync(new U

我使用这段代码将XML发布到REST Web服务,但只是得到一个模糊的“500服务器错误”。如果我将同一个XML粘贴到Fiddler中,它就可以完美地工作,那么我做错了什么

using (var client = new HttpClient())
{
   var httpContent = new StringContent(doc.ToString(), Encoding.UTF8, "text/xml");
   var response = client.PostAsync(new Uri("httpsapiurl"),httpContent).Result;
   if (response.IsSuccessStatusCode)
   {
       // EDITED: this isn't hit as IsSuccessStatusCode is always false
       //Stream stream = await response.Content.ReadAsStreamAsync();
   }
}

您是否需要设置请求的内容类型

try
{
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/xml"));
    HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Post, URL);
    req.Content = new StringContent(doc.ToString(), Encoding.UTF8, "text/xml");
    await httpClient.SendAsync(req).ContinueWith(async respTask =>
    {
        Debug.WriteLine(req.Content.ReadAsStringAsync());
    };
}
catch (Exception ex) 
{ 
}
尤其是这条线很重要。我遇到过类似的问题,一个API在没有正确设置内容类型头的情况下拒绝回吐任何内容

 req.Content = new StringContent(doc.ToString(), Encoding.UTF8, "text/xml");

不知道它是否有帮助。

所以这看起来像是一个范围问题,意味着当您试图访问流或r变量时,它超出了if语句的范围。。您调试过这个..@MethodMan吗?抱歉,该代码有误导性,因为条件从不==true