Routing HTTP-Fehler 404.0 0x80070002
Habe ich erstellt routing-Regeln in meine ASP.NET Anwendung und auf meine Dev-Maschine auf IIS7 funktioniert alles einwandfrei. Wenn ich die Lösung bereitstellen zu prod-server, die auch IIS7, bekomme ich Fehler 404 (Seite nicht gefunden) während des Zugriffs auf die URL. Vielleicht könnte ja mal jemand zeigen, wo ist das problem?
Tatsächlichen Fehler
HTTP-Fehler 404.0 - Nicht Gefunden
gesuchte Ressource wurde
entfernt, hatte seinen Namen geändert, oder ist
vorübergehend nicht verfügbar. Detaillierte
Fehler InformationModule IIS Web Core
Benachrichtigung MapRequestHandler
Handler StaticFile Fehlercode
0x80070002 Angeforderte URL
http://xxx.xxx.xxx.xxx:80/pdf-button
Physikalischer Pfad
C:\www\pathtoproject\pdf-button Anmeldung
Methode Anonyme Anmeldung Mit Dem Benutzer Anonymous
Meinem Eigentlichen Code
<add key="RoutePages" value="all,-forum/"/>
UrlRewrite.Init(ConfigurationManager.AppSettings["RoutePages"]);
public static class UrlRewrite
{
public static void Init(string routePages)
{
_routePages = routePages.ToLower().Split(new[] { ',' });
RegisterRoute(RouteTable.Routes);
}
static void RegisterRoute(RouteCollection routes)
{
routes.Ignore("{resource}.axd/{*pathInfo}");
routes.Ignore("favicon.ico");
foreach (string routePages in _routePages)
{
if (routePages == "all")
routes.MapPageRoute(routePages, "{filename}", "~/{filename}.aspx");
else
if (routePages.StartsWith("-"))
routes.Ignore(routePages.Replace("-", ""));
else
{
var routePagesNoExt = routePages.Replace(".aspx", "");
routes.MapPageRoute(routePagesNoExt, routePagesNoExt, string.Format("~/{0}.aspx", routePagesNoExt));
}
}
}
}
- welche Art von routing benutzt Ihr ? MVC ?
- Ich benutze System.Web.Routing.RouteCollection Klasse (.NET 4.0)
- Was erwartest du, dass Sie geroutet werden zu - pdf-button.aspx? Wie ich bin sicher, Sie haben realisiert 0x80070002 = ERROR_FILE_NOT_FOUND
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gerade festgestellt, dass die folgenden Zeilen Hinzugefügt werden müssen
web.config
Datei, jetzt funktioniert alles einwandfrei auf Produktions-server zu.Die vorgeschlagene Lösung
funktioniert, aber die Leistung beeinträchtigen kann, und kann sogar Fehler verursachen, da jetzt alle eingetragenen HTTP-Module laufen auf jede Anfrage, nicht nur verwaltet Anfragen (zB .aspx). Dies bedeutet, dass die Module laufen auf jeden .jpg .gif .css .html-Code .pdf etc.
Einer sinnvolleren Lösung ist, um diese in Ihrer Website.config:
Kredit für seine geht an Colin Farr. Check-out seine post zu diesem Thema an http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html.
Meine Lösung, nachdem ALLES versucht:
Bad-Bereitstellung, eine alte PrecompiledApp.config hing um meinen Standort bereitstellen, und macht alles nicht funktionieren.
Mein letzten Einstellungen, die funktionierte:
Ändert sich nichts im web.config - dies bedeutet, dass keine spezielle Handler für das routing. Hier ist mein Schnappschuss der Abschnitte, die eine Menge der anderen posts verweisen. Ich bin mit FluorineFX, also habe ich dieser handler Hinzugefügt, aber ich brauchte keine andere:
Global.ashx: (nur Methode, keine note)
PassthroughRouteHandler.cs - dies erzielt eine automatische Konvertierung von http://andrew.arace.info/stackoverflow zu http://andrew.arace.info/#stackoverflow die müsste dann behandelt werden, indem Sie die Standardeinstellung.aspx:
Das problem für mich war, ein neues server-System.Web.Routing wurde von version 3.5, während web.config angeforderte version 4.0.0.0.
Die Auflösung war
%WINDIR%\Framework\v4.0.30319\aspnet_regiis -i
%WINDIR%\Framework64\v4.0.30319\aspnet_regiis -i
Deaktivieren Sie diese im Windows-Explorer.
"Hide file Erweiterungen bei bekannten Typen"
Unter diesem Globalen.asax.cs gelöst für mich.