ASP.NET MVC-5 - (HTTP-Fehler 404.0 - Nicht Gefunden) mit lange nicht existierende URL
Erstellte ich ein neues Projekt in Microsoft Visual Studio Express 2013 für das Web.
Es ist ein ASP.NET MVC-5 - .NET Framework 4.5-Projekt.
Wollte ich handle (Die Ressource kann nicht gefunden werden):
Ich Tat, Griff es mit dem code unten.
Dieser code funktioniert, wenn ich so etwas mache (/Home/kddiede/ddiij) oder (/djdied/djie/djs), dies wird im Ergebnis zeigt meine benutzerdefinierte Fehlerseite.
Jedoch, wenn ich versuche, etwas zu tun (/Home/kddiede/ddiij/dfd/sdfds/dsf/dsfds/fd) oder eine lange, nicht-existierende URL, Es zeigt mir das:
Code aus: http://www.codeproject.com/Articles/635324/Another-set-of-ASP-NET-MVC-4-tips
Tipp 16: Customizing-Fehler-Bildschirme
Fehler-Seite ist in der /View/Shared/Error.cshtml
Web.config
<system.web>
<customErrors mode="RemoteOnly" />
</system.web>
Global.asax
protected void Application_EndRequest(Object sender, EventArgs e)
{
ErrorConfig.Handle(Context);
}
ErrorConfig Klasse
public class ErrorConfig
{
public static void Handle(HttpContext context)
{
switch (context.Response.StatusCode)
{
//Not authorized
case 401:
Show(context, 401);
break;
//Not found
case 404:
Show(context, 404);
break;
}
}
static void Show(HttpContext context, Int32 code)
{
context.Response.Clear();
var w = new HttpContextWrapper(context);
var c = new ErrorController() as IController;
var rd = new RouteData();
rd.Values["controller"] = "Error";
rd.Values["action"] = "Index";
rd.Values["id"] = code.ToString();
c.Execute(new RequestContext(w, rd));
}
}
ErrorController
internal class ErrorController : Controller
{
[HttpGet]
public ViewResult Index(Int32? id)
{
var statusCode = id.HasValue ? id.Value : 500;
var error = new HandleErrorInfo(new Exception("An exception with error " + statusCode + " occurred!"), "Error", "Index");
return View("Error", error);
}
}
Diesem letzten Stück code von der website, die ich oben erwähnt wurde, nicht Hinzugefügt, die in Global.asax, da Es bereits in FilterConfig.cs
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
Jemand weiß wie es zu lösen ist?
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gelöst. Zu Punkt alle nicht-vorhandene urls, um Ihre Fehler-Seite, tun Sie den folgenden:
Fügen Sie den folgenden code am Ende Ihrer RouteConfig.cs-Datei:
Fügen Sie den folgenden code, um Ihre Web.config-Datei:
Dass zeigen soll, dass alle nicht-vorhandene urls wie (/ad/asd/sa/das,d/asd,asd.asd+dpwd'=12=2e-21), um Ihre Fehler-Seite.
runAllManagedModulesForAllRequest = "true"
. Ist nicht es eine Möglichkeit, die Module verwenden, nur Bedarf?Anderer Ansatz wäre es, fügen Sie diese auf Ihrer Website.config innerhalb des
system.web
element