【发布时间】:2016-12-27 09:22:24
【问题描述】:
服务器端
public class MyServices : Service
{
public object Get(Hello request)
{
throw new InvalidOperationException("test error message");
//return new HelloResponse { Result = "Hello, {0}!".Fmt(request.Name) };
}
}
客户端
try
{
var client = new JsonServiceClient("http://localhost:28586/");
var response = client.Get<HelloResponse>(new Hello { Name = "DHJ" });
}
catch (WebServiceException ex)
{
// ex.ErrorCode = "InvalidOperationException" // No Problem.
// ex.ErrorMessage = null // always null. Why?
}
我看到了 ServiceStack 的文档,如下所示:
抛出 C# 异常
在大多数情况下,您不需要关心 ServiceStack 的错误处理,因为它为抛出 C# 异常的正常用例提供了本机支持,例如:
公共对象发布(用户请求) { if (string.IsNullOrEmpty(request.Name)) throw new ArgumentNullException("Name"); } C# 异常到 HTTP 错误的默认映射
默认情况下 C# 异常:
从 ArgumentException 继承返回的 HTTP StatusCode 为 400 BadRequest NotImplementedException 或 NotSupportedException 作为 405 MethodNotAllowed 返回 AuthenticationException 返回为 401 Unauthorized UnauthorizedAccessException 作为 403 Forbidden 返回 OptimisticConcurrencyException 作为 409 冲突返回 其他正常的 C# 异常返回为 500 InternalServerError 可以使用 Config.MapExceptionToStatusCode 上的用户定义映射扩展此列表。
【问题讨论】: