2014-02-14 13 views
5

ich eine Route dynamisch an die Routetable bin hinzufügen, aber das Update ist die Propagierung nicht auf die anderen Prozessen:Hinzufügen dynamische Routen in Webgärten

using (RouteTable.Routes.GetWriteLock()) 
{ 
    RouteTable.Routes.MapPageRoute(
     String.Format("_{0}", routeName), 
     routeName, 
     "~/Template.aspx", 
     true, 
     new RouteValueDictionary {{"page", routeName}}); 
} 

Dies schafft korrekt den richtigen Weg, wie ich es manchmal zugreifen , aber wenn ich zu einem neuen Prozess gewechselt bin oder wenn ich später etwas versuche, kann ich nicht auf die Seite zugreifen. Wenn ich dann den App-Pool neu starte, funktioniert es gut. Auch wenn ich lange genug warte, ein paar Stunden, wenn die Prozesse recycelt wurden, funktionieren die Routen.

Ich denke, dass dies eine Folge einer Route ist, die auf dem einen Prozess erstellt wird, und nur für zukünftige Prozessrecycles.

Hay Ideen, wie die Route aktualisiert werden aktualisiert?

Antwort

1

Ich denke, das Problem ist mit der Implementierung von Routes. Wie wir sehen können here - RouteTable.Routes ist statisch. Das Problem ist also nicht, warum die Routen nicht für alle Prozesse propagieren, sondern eher eine statische Variable in einem Webgarten-Problem.

Wenn ich mir einen Workaround ausdenke, kann ich eine Lösung finden, die dem Sharing Cache zwischen WebGarden Prozessen/Webservern in einem Cluster ähnelt. Sie müssen die Liste der dynamischen Routen OutProc und in eine DB oder statische Datei nehmen. Ihr Code muss diese Dateien dann auf Änderungen hin verfolgen und neue Routen hinzufügen, wenn sie der externen Ressource hinzugefügt werden.

Verwandte Themen