網站搜尋

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() 返回重定向回應。