【发布时间】:2019-10-16 05:52:27
【问题描述】:
我有一个带有简单测试方法的 NET.Core API:
public async Task<IActionResult> TestApi()
{
try
{
throw new UnauthorizedAccessException("My custom error");
return Ok();
}
catch (UnauthorizedAccessException ex)
{
return StatusCode(401,ex.Message);
}
catch (Exception ex)
{
throw;
}
}
我需要像这样从客户端检索消息:
var request = WebRequest.Create($"{baseUrl}{url}") as HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/json";
request.Expect = "application/json";
request.ContentLength = 0;
if (parameters != null)
{
request.ContentLength = serializedObject.Length;
using (var writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write(serializedObject);
}
}
var response = request.GetResponse() as HttpWebResponse;
var responseEncoding = Encoding.GetEncoding(response.CharacterSet);
using (var sr = new StreamReader(response.GetResponseStream(), responseEncoding))
{
var result = sr.ReadToEnd();
return JsonConvert.DeserializeObject<T>(result);
}
现在request.GetResponse() as HttpWebResponse 回复我:
The remote server returned an error: (401) Unauthorized.
而不是My custom error。有人能指出我正确的方向吗?
【问题讨论】:
-
你看过内部异常了吗?
-
InnerException 是
null,Response对象中没有其他信息。 -
查看
Response属性。特别是Response.StatusDescription。您看到的消息未从您的 API 返回。您的 API 返回 401 并且GetResponse使用此默认消息引发异常。该异常有一个Response属性,其中包含有关响应的更多详细信息,包括该消息。 -
你看过这篇文章吗:stackoverflow.com/questions/46689006/… ?
-
我读了很多帖子都没有运气。你建议的是 MVC 5。