UPDATE: Umformulierung für Prägnanz ...
Bei einem ASP.NET MVC-Projekt ist es möglich, dass die web.config -Regelregeln Vorrang vor MVCs RegisterRoutes()
-Anruf haben ODER IgnoreRoute
nur für eine bestimmte Domäne aufgerufen werden kann!
Ich habe eine einzige MVC-Anwendung, die Verkehr über mehrere Domains ( meinedomain.com und otherdomain.com ) akzeptiert, die Anwendung bedient unterschiedliche Inhalte basierend auf dem angeforderten Host ( dh es ist Multi-Tenant).
Ich habe einen URL-Rewrite (einen Reverse-Proxy) konfiguriert in web.config , der nur für einen bestimmten Host gelten sollte:
%Vor% Allerdings wird eine MVC-Anwendung anscheinend nur web.config konfigurierte Routen berücksichtigen, wenn sie von der RegisterRoutes()
-Methode der Anwendung mit:
Was dann die Ignorierung auf beide Domains anwendet . Vorschläge sehr geschätzt ...
kann IgnoreRoute nur für eine bestimmte Domäne aufgerufen werden?
Ja. Da Domänen standardmäßig von .NET-Routing vollständig ignoriert werden, müssen Sie das Routing anpassen, um IgnoreRoute
für Domänen spezifisch zu machen.
Während es möglich ist, die Unterklasse RouteBase
zu erstellen, ist die einfachste Lösung, ein benutzerdefinierte Route Constraint und verwenden Sie diese Option, um die Domänen zu steuern, denen eine bestimmte Route entspricht. Routenbeschränkungen können mit den vorhandenen Erweiterungsmethoden MapRoute
, MapPageRoute
und IgnoreRoute
verwendet werden. Dies ist die am wenigsten invasive Lösung für eine bestehende Konfiguration.
Beachten Sie, dass die obige Klasse zu Testzwecken einen Abfragezeichenfolgenparameter akzeptiert, wenn die Anwendung im Debugmodus kompiliert wird. Dadurch können Sie eine URL wie
verwenden %Vor%um die Einschränkung lokal zu testen, ohne den lokalen Webserver und die Hosts-Datei konfigurieren zu müssen. Diese Debugging-Funktion wurde aus dem Release-Build herausgenommen, um mögliche Fehler (Schwachstellen) in der Produktionsanwendung zu vermeiden.
HINWEIS: Es gibt eine Überladung, die den Parameter
constraints
für alle integrierten Routenerweiterungen akzeptiert, einschließlichIgnoreRoute
und Bereichsrouten.
Referenz: Ссылка
ist es möglich, dass die web.config Umschreibungsregeln Vorrang vor MVCs
habenRegisterRoutes()
?
Ja. Beachten Sie, dass einige vorhanden sind Unterschiede zwischen IIS URL Rewriting und ASP.NET Routing :
Kann
IgnoreRoute
nur für eine bestimmte Domäne aufgerufen werden?
Laut MSDN können Sie die Version verwenden, die akzeptiert url
als Parameter. Aber für die gleiche Domain! Beachten Sie, dass es bei der Arbeit mit mehreren Domänen in der ASP.NET MVC-Anwendung einige Nachteile gibt:
VirtualPathData
Klasse. Nur Token im URL-Pfad werden zum Routing verwendet. Wenn Sie eine einzelne MVC-App verwenden möchten, die mehrere Domänen verwaltet und diese jeweils anders verteilt, müssen Sie mit dem MVC-Routing umgehen . Es ist jedoch möglich, eine benutzerdefinierte Site-Route zu verwenden, die erbt von RouteBase
.
Lassen Sie uns nun folgendes besprechen:
routes.IgnoreRoute("proxy");
Wendet die Ignorierung auf beide an Domänen.
Ich glaube, die -Regel funktioniert nicht perfekt , da die Verarbeitung bis zu ASP.NET-Routing reicht! möglicher Grund könnte in ServiceModel
tag innerhalb web.config gefunden werden. Fügen Sie den serviceHostingEnvironment
Code wie folgt hinzu:
Dadurch können Routen durch IIS geleitet werden.
Ändern Sie auch <match url="proxy/(.*)" />
in <match url="^proxy/(.*)" />
(mit einem zusätzlichen ^
), was weit verbreitet ist.
Tags und Links asp.net-mvc asp.net iis azure-web-sites orchardcms