我正在爲servicestack編寫一個插件,我想利用內置於服務的error handling。這個想法是我想在處理路由之前執行一些邏輯,並且可能返回403錯誤。我認爲這樣做的方式是添加一個RequestFilter
並從其中投擲一個UnauthorizedAccessException
。自定義插件的錯誤處理
雖然這不起作用,並且響應最終是空的。它看起來像通常處理這些的try/catch不適用於RequestFilters
。 DtoUtils
有一個HandleException()
方法創建一個錯誤響應,但我不知道如何正確地將其添加到RequestFilter
收到的IHttpResponse
。
我想知道是否有另一種方法來添加預路由邏輯,您可以從內部服務中引發異常,或者是否有建議的方式來創建來自RequestFilter
的錯誤響應。通過在服務中拋出的異常返回
編輯
我想通過插件返回匹配錯誤(儘可能地)的錯誤。
DtoUtils.HandleException
看起來像SS構建所述響應的方式,但它拋出一個StackOverflowException
當我嘗試從插件這樣稱呼它:
var error = new HttpError(HttpStatusCode.Forbidden, "UnauthorizedAccessException", message);
//_appHost is stored by the original Register() call
var result = DtoUtils.HandleException(_appHost, request, error);
response.WriteToResponse(request, result);
response.EndServiceStackRequest();
我試過這個,但是響應與來自服務的正常異常響應非常不同。從jQuery調用時很容易看到這一點,當你這樣做時'jqXHR.responseText'是空的。對於正常的ServiceStack異常,responseText包含序列化錯誤。 – Tyrsius 2013-05-06 17:49:51