我正在尝试理解关于使用
我有一个客户端库,它正在向 WebAPI 控制器发出请求;
我知道该请求会抛出一个异常,并包含消息
当我收到响应时;
HttpWebRequest
进行异常处理的内容。我有一个客户端库,它正在向 WebAPI 控制器发出请求;
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);
我知道该请求会抛出一个异常,并包含消息
实体已存在 - 1234
。当我收到响应时;
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内部服务器错误
(使用正确的状态代码来表示消息稍后会出现)。现在如果我读取WebException
的Response
,它确实包含我的消息和堆栈跟踪。
问题
- 为什么响应中没有
500
状态代码,而是抛出了协议错误? - 有没有更正确的处理请求的方法?
我搜索了一下发现有些人在使用不正确的头文件等时会遇到这个问题。但据我所知,我已经添加了所有可添加的头文件,但仍旧出现相同的问题。