首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpWebRequest WebException ProtocolError

HttpWebRequest WebException ProtocolError
EN

Stack Overflow用户
提问于 2014-09-26 15:19:45
回答 1查看 8.2K关注 0票数 8

我试图了解有关HttpWebRequest异常处理的一些内容。

我有一个客户端库,它向WebAPI控制器发出请求;

代码语言:javascript
复制
HttpWebRequest r = (HttpWebRequest)WebRequest.Create(url);

r.Method = "POST";
r.ContentType = "application/json";

foreach (var header in request.Headers)
{
     r.Headers.Add(header.Key, header.Value.ToString());
}

r.ContentLength = request.RequestBody.Length;

using (StreamWriter writer = new StreamWriter(r.GetRequestStream()))
    writer.Write(request.RequestBody);

我知道请求会抛出一个异常,并包含消息entity already exists - 1234

当我得到回应时;

代码语言:javascript
复制
using (HttpWebResponse response = (HttpWebResponse)r.GetResponse())
{
    if (response.StatusCode == HttpStatusCode.OK)
        using (StreamReader reader = new StreamReader(response.GetResponseStream()))
            return reader.ReadToEnd();

     return "Invalid"; 
 }

我被扔了一个WebException。因此,请求的调用方在其中包含一个try..catch。我得到了WebException。我得到的是一个协议错误,而不是抛出的500 internal server error (稍后使用正确的状态代码来表示消息)。现在,如果我阅读Response of WebException,它确实包含了我的消息和堆栈跟踪。

问题

  • 为什么我在响应中没有得到500的状态代码,为什么它会抛出协议错误?
  • 是否有更正确的方法来处理请求?

我四处搜索,发现一些人在没有使用正确的标头时遇到了这个问题。但据我所知,我已经添加了所有我能够并且仍然得到相同行为的标题。

EN

回答 1

Stack Overflow用户

发布于 2015-07-22 10:53:34

500 internal server error通常意味着 API接收到请求,但在处理时抛出一个未处理的异常,从而导致“内部服务器错误”。

您可以登录到数据库或记录API的所有未处理异常,以帮助您的调试过程。祝好运。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26062931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档