全局处理程序AppHostBase.ServiceExceptionHandler
只处理服务异常。要处理发生在服务之外的异常,您可以设置全局AppHostBase.ExceptionHandler
处理程序,例如:
public override void Configure(Container container)
{
//Handle Exceptions occurring in Services:
this.ServiceExceptionHandler = (request, exception) => {
//log your exceptions here
...
//call default exception handler or prepare your own custom response
return DtoUtils.HandleException(this, request, exception);
};
//Handle Unhandled Exceptions occurring outside of Services,
//E.g. in Request binding or filters:
this.ExceptionHandler = (req, res, operationName, ex) => {
res.Write("Error: {0}: {1}".Fmt(ex.GetType().Name, ex.Message));
res.EndServiceStackRequest(skipHeaders: true);
};
}
要创建 DTO 并将其序列化到非服务 ExceptionHandler
中的响应流,您需要访问并使用正确的序列化程序来处理来自 IAppHost.ContentTypeFilters 的请求。
有关更多详细信息,请参见错误处理 wiki 页面。