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...

我的所有异常都将在一个单独的程序集中,服务器和客户端都将引用该程序集。

如何最好地将这些异常返回给客户端,客户端将如何检查响应是我的自定义异常、另一个异常还是简单的文本消息?

Web API将自定义异常抛出回客户端

回答问题的第一部分。。返回异常的正确方法是使用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();

在这种情况下,您将在响应类中找到文本或异常