目前,我正在执行以下操作以将错误消息发送回客户端:
HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.Forbidden)
{
ReasonPhrase = "No rights to access this resource",
};
throw new HttpResponseException(message);
但是,我想通过发回自定义异常来进一步改进响应。所以我可以有这样的东西:
public class MyAppException : Exception {}
public class NoRightsException : MyAppException {}
public class SaveException : MyAppException {}
//etc...
我所有的异常都将在一个单独的程序集中,服务器和客户端都将引用该程序集。
如何最好地将这些异常返回给客户端以及客户端将如何检查响应是我的自定义异常、另一个异常还是只是一条文本消息?
最佳答案
要回答问题的第一部分……返回异常的正确方法是使用 Request.CreateErrorResponse。此方法有许多重载,其中一个将异常作为参数。在您的情况下,您可能会...
Request.CreateErrorResponse(HttpStatusCode.BadRequest, new NoRightsException());
更新:
虽然您没有说明您的客户端方法是什么,但我假设您使用的是 HttpClient。如果是这种情况,您应该进行类似于此的调用...
var client = new HttpClient();
var task = client.PostAsync(url)
.ContinueWith(response =>
{
response.Result.EnsureSuccessStatusCode();
});
task.Wait();
在这种情况下,您将在响应类中找到文本或异常
关于c# - Web API 将自定义异常抛回给客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26718868/