使用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