使用ServiceStack,在两个地方实现异常处理/日志记录非常重要:
Inside of each ServiceRunner<T>
。
public class MyServiceRunner<T> : ServiceRunner<T>
{
public override object HandleException(IRequestContext requestContext, T request, Exception ex)
{
// Implement your exception handling/logging here.
// T request is your request DTO.
}
}
Inside of AppHost,以便您可以处理服务之外发生的未处理异常。
public override void Configure(Container container)
{
ExceptionHandler = (req, res, operationName, ex) =>
{
//Handle Unhandled Exceptions occurring outside of Services
//E.g. Exceptions during Request binding or in filters:
}
}
我的问题:
答案 0 :(得分:2)
在ServiceStack v4中,可以从IRequest.Dto
获取请求DTO,但您可以使用IAppHost.ServiceExceptionHandlers
和IAppHost.UncaughtExceptionHandlers
在ServiceStack V3中,您可以注册一个GlobalRequestFilter,它将请求DTO存储在IRequestContext.Items
字典中,您可以稍后从请求上下文中获取该字典。