Ham*_*ein 5 c# httprequest asp.net-web-api
我试图了解有关使用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);
Run Code Online (Sandbox Code Playgroud)
我知道请求将引发异常,并包含消息“实体已存在-1234”。
当我得到回应时;
using (HttpWebResponse response = (HttpWebResponse)r.GetResponse())
{
if (response.StatusCode == HttpStatusCode.OK)
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
return reader.ReadToEnd();
return "Invalid";
}
Run Code Online (Sandbox Code Playgroud)
我抛出了WebException。因此,请求的调用者中有一个try..catch。我得到了WebException。我得到的是协议错误,而不是引发的500内部服务器错误(稍后使用正确的状态代码表示消息)。现在,如果我阅读了WebException的Response,它确实包含了我的消息和stacktrace。
问题
我四处搜寻,发现有些人在使用不正确的标题等时遇到了这个问题。但是据我所知,我已经添加了所有可以并且仍然具有相同行为的标题。
通常500 internal server error意味着API 收到了请求,但在处理请求时抛出了未处理的异常,即“内部服务器错误”。
您可以记录到数据库或归档所有 API 的未处理异常,以帮助您的调试过程。祝你好运。
| 归档时间: |
|
| 查看次数: |
5551 次 |
| 最近记录: |