Web API将自定义异常抛出回客户端
本文关键字:客户端 自定义异常 API Web | 更新日期: 2023-09-27 18:29:08
目前,我正在执行以下操作将错误消息发送回客户端:
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();
在这种情况下,您将在响应类中找到文本或异常