c# - JsonServiceClient 未遵守 RedirectHttpHandler 的回應
我們已經設置了一個全局處理器來捕獲特定類型的異常。它可能是由使用基礎服務實現的多個服務端點拋出的。我們綁定錯誤處理器並嘗試使用 RedirectHttpHandler 進行重定向:
ServiceExceptionHandlers.Add(HandledErrorLogging);
...
private object HandledErrorLogging(IRequest httpreq, object request, Exception ex)
{
if (ex is NoActiveSubscriptionException)
{
return new RedirectHttpHandler
{
RelativeUrl = "/account?error=",
StatusCode = HttpStatusCode.TemporaryRedirect
};
}
}
我們正在使用 JsonServiceClient 查詢這些端點。
JsonServiceClient 並未遵守 RedirectHttpHandler 的重定向。當我們連接 jsonclient.responsefilter(r) 時,r.redirectedicted 為 false:
let client = new JsonServiceClient(process.env.REACT_APP_API_BASE_URL);
client.setBearerToken(cookie.load("XSRF-TOKEN"));
JsonServiceClient.globalResponseFilter = function(e)
{
console.log("e.redirect:", e.redirected));
};
return client;
}
使用 ServiceExceptionHandlers 和 JsonServiceClient 引起重定向的最佳方法是什麼?
答案#1
RedirectHttpHandler 是一個 IHttpAsyncHandler,它只能在 RawHttpHandlers 中請求管線的開始使用,用來告訴 ServiceStack 它應該使用哪個 HttpHandler 來處理請求。
ServiceExceptionHandlers 用於覆寫 Exception 的處理,你可以覆寫它以返回不同的錯誤 Response DTO。
如果回應中尚未寫入任何內容,您可以使用 HttpResult.Redirect() 返回重定向回應。