Używam Owina do hostowania kontrolerów WebAPI. Mam Owin middleware, który dokonuje uwierzytelnienia i ustawia następujące jeśli uwierzytelnianie nie powiedzie:Niestandardowa strona błędu podczas używania Owin
context.Response.StatusCode = (int) HttpStatusCode.Unauthorized;
Kiedy to nastąpi chcę wyświetlić stronę HTML z niektórych instrukcji dla użytkownika. (Np. "Musisz się zalogować")
W tej chwili przekierowuję użytkownika do strony accessdenied.html, ale wolałbym, aby odmowa dostępu została wyświetlona bezpośrednio, bez przekierowania użytkownika (Nie chcę zmieniać pola Location w przeglądarce internetowej).
Zakładam, że mógłbym wygenerować kod HTML w locie i dodać go do odpowiedzi, na przykład czytając zawartość HTML z zasobu.
Moje pytanie brzmi: Czy można automatycznie wyświetlić niestandardową stronę błędu z dostępem, korzystając z konfiguracji? W „tradycyjnie,” ASP.NET, można było założyć CustomErrors w pliku web.config, ale to nie wydaje się, aby pracować z Owin selfhost:
<customErrors>
<error statusCode="401" redirect="~/accessdenied.html"/>
</customErrors>
Nie będzie działać dla hostów, ponieważ 'VirtualPathUtility' jest częścią' System.Web' i wymaga, aby usługi IIS działały poprawnie. –
Powinieneś użyć tego: 'request.Uri.AbsoluteUri.Replace (request.Uri.PathAndQuery, request.PathBase +"/Home/Error ")' – tmoreira
Jeśli wykonasz Response.Redirect, zmieni kod statusu HTTP na 302. –