podczas obsługi błędów 404 w ASP.NET czy można ustawić błędy 404, aby przekierować na stronę, która przesyła kod odpowiedzi 404 do przeglądarki lub powinien być użyty server.transfer, aby 404 nagłówek może zostać wysłany do przeglądarki, podczas gdy adres URL pozostaje taki sam?404 page response.redirect vs server.transfer
Odpowiedz
customErrors statusCode = "404" powoduje 302 tymczasowe przekierowanie, a następnie 404 (jeśli ustawiono to w kodzie strony 404).
Dlatego dodaje się powinno zrobić to za Ciebie w global.asax lub błędów HttpModule:
protected void Application_Error(Object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
if (exception is HttpUnhandledException)
{
if (exception.InnerException == null)
{
Server.Transfer(ERROR_PAGE_LOCATION, false);
return;
}
exception = exception.InnerException;
}
if (exception is HttpException)
{
if (((HttpException)exception).GetHttpCode() == 404)
{
Server.ClearError();
Server.Transfer(NOT_FOUND_PAGE_LOCATION);
return;
}
}
if (Context != null && Context.IsCustomErrorEnabled)
Server.Transfer(ERROR_PAGE_LOCATION, false);
else
Log.Error("Unhandled exception trapped in Global.asax", exception);
}
Edit: Aha, i Best way to implement a 404 in ASP.NET umieścić mnie na drodze do bezwzględnej Server.ClearError();
Zobacz stanowisko, które zrobiłem, które obejmuje to wszystko.
Chciałbym użyć sekcji customerrors w pliku web.config, a następnie określić stronę, do której ma się udać 404.
<configuration>
<system.web>
<customErrors mode="On" defaultRedirect="Error.aspx">
<error statusCode="404" redirect="404Error.aspx" />
</customErrors>
</system.web>
</configuration>
Na stronie odbiorczej, jeśli chcesz jeszcze wysłać 404 można umieścić to w przypadku page_load:
Response.Status = "404 Not Found";
Nadal wykonuje przekierowanie o temp. 302. – Ted
Moja rada jest, aby proces ASP.NET do pracy dla Ciebie w oparciu o twój web.config, ale jeśli naprawdę chcesz to zrobić w kodzie, powinieneś trzymać się serwera. Transfer spowoduje, że zaoszczędzisz odświeżenia.
Response.Redirect wykona 302 najpierw niż 404 na przekierowanej stronie. Serwer.Transfer zachowa adres URL, więc na żądanej stronie znajduje się 404.
Myślę, że wszystko sprowadza się do SEO. Sugeruję użycie Server.Transfer, ponieważ jest bardziej zrozumiałe dla przeglądarki/wyszukiwarki, że żądany adres URL nie został znaleziony. Jeśli użyjesz strony Response.Redirect, "tymczasowo" zostanie przekierowana na stronę nie znalezioną. To nie jest dobre ... 302 nie jest dobrym pomysłem.
- 1. RoutingError Page 404
- 2. Server.transfer zmiana adresu URL po raz drugi
- 3. MVC 6 Routing, SPA awaryjna + 404 Error Page
- 4. hapi.js - 404 trasa VS pliki statyczne trasy
- 5. Dlaczego Response.Redirect czasami pobiera z pamięci podręcznej?
- 6. Response.Redirect kod stanu HTTP
- 7. nazywając Response.End() po Response.Redirect()
- 8. Wywołanie response.redirect przez Ajax
- 9. 404 Niestandardowe przekierowanie
- 10. Response.redirect nie przekierowuje w C#
- 11. Używanie Response.Redirect() do względnej ścieżki
- 12. PhantomJS Render Page Fonts
- 13. Page ładowanie trwa wiecznie
- 14. DEVEXPRESS - xtrareport - page break
- 15. Page w android
- 16. Javascript refresh page
- 17. Page Rank w Pythonie
- 18. Apache poi page breaks
- 19. Usługi Azure Mobile/VS Tools dla Cordova - 404
- 20. Dlaczego usługa Response.Redirect nie przekierowuje zewnętrznego adresu URL?
- 21. AngularJS ui-route exit page
- 22. Błąd niestandardowy 403 Page PHP
- 23. Dlaczego SPA (Single Page App)?
- 24. <error-page> konfiguracja nie działa w Spring MVC
- 25. ASP.Net Response.Redirect nie działa w Application_Error?
- 26. Response.Redirect strips Header Referrer - Można go dodać?
- 27. Response.Redirect wyniki w "Obiekt przeniesiony tutaj"
- 28. Jak mogę mieć pracę Response.Redirect() z MasterPage?
- 29. Co to jest odpowiednik Response.Redirect w Silverlight?
- 30. nie można wywołać Response.Redirect wewnątrz metody statycznej
Jestem ciekaw zobaczyć twój blog, ale na ironię strona nie została znaleziona. ;) – Korijn
Och, ironia! Link został naprawiony. – Ted