使用ServiceRunner,异常处理,与EndConfig.ReturnsInnerException = TRUE,ServiceStack Config.ReturnsInnerException
我预计该服务将返回到客户端的内部异常(原创除外),
代替WebServiceException(仅包含errorCode字符串中的内部异常的名称)。
在调试过程中,在被覆盖的HandleException,
我能看到EndConfig.ReturnsInnerException是真的。
但客户端没有得到内部异常。我如何解决这个问题?
重要的是,客户端要获得内部异常。
UPDATE 2
我通过以下方式发送内部异常的信息。
(我宁愿WebServiceException内部异常有我的异常的引用。)
class MyServiceRunner<T> : ServiceRunner<T>
{
public override object HandleException(IRequestContext requestContext, T request,
Exception ex)
{
myException myex=ex as myException;
if (myex != null)
{
ResponseStatus rs = new ResponseStatus("APIException", myex.message);
rs.Errors = new List<ResponseError>();
rs.Errors.Add(new ResponseError());
rs.Errors[0].ErrorCode = myex.errorCode;
rs.Errors[0].FieldName = requestContext.PathInfo;
var errorResponse = DtoUtils.CreateErrorResponse(request, ex, rs);
// log the error if I want .... Log.Error("your_message", ex);
// as I don't call the base.HandleException, which log the errors.
return errorResponse;
}
else
return base.HandleException(request, requestDto, ex);
}
}
在客户端
catch (WebServiceException err)
{
if (err.ErrorCode == "APIException" && err.ResponseStatus.Errors != null )
{
string detailerror =err.ResponseStatus.Errors[0].ErrorCode;
string module = err.ResponseStatus.Errors[0].FieldName;
}
}
感谢您的回答,这是一个老问题,我找到了错误列表的解决方案。请看我的更新。 – stefan2410