Frage

Ich bin eine ziemlich grundlegende Route zu einer Asp.Net Web hinzuzufügen versuche Forms app (unter IIS 7 ausgeführt, integrierte Modus): für Anforderungen auf http://mydomain.com/foo/ ich möchte die Ergebnisse einer dynamischen Seite zeigen ( http://mydomain.com/foopage.aspx ).

Ich habe einen RouteHandler geschaffen, dass all dies tut, und es scheint richtig Routing zu werden.

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
     var page = System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath("~/foo.aspx", typeof(MyApp.Web.Foo)) as MyApp.Web.Foo;
     return page as IHttpHandler;
    }

Das Problem ist, in meinem RouteHandler der GetHttpHandler Methode, alle Instanzen des aktuellen Benutzers (requestContext.HttpContext.User, System.Web.HttpContext.Current.User) sind null. Leider muss foo.aspx wissen, was der aktuelle Benutzer (für die Anmeldung Kontrollen, Rollen Sachen, etc.), so machen die Seite Ausnahmen NULL-Verweis wirft. Meine Vermutung ist, dass diese Route Handler abzufeuern, bevor Asp.Net die Chance zu verdrahten die Httpcontext mit Nutzerinformationen bekommt. Jede Idee eines Work-around?

PS - Ich weiß, dies, indem Sie eine Server.Transfer auf einer Seite erreicht werden kann unter http: / /mydomain.com/foo/default.aspx . Ich möchte das Routing für diese Art der Sache verwenden, anstatt einen Haufen nutzloser Ordner mit unübersichtlich Dinge.

Danke!

War es hilfreich?

Lösung 2

ich es geschafft, dieses heraus mich Figur.

Ähnlich wie diese Frage , meine Routen wurden nur gut arbeiten, wenn die Route Ursprung in aspx beendet ( http : //mydomain.com/foo-origin.aspx ), aber nicht, wenn sie es nicht taten ( http://mydomain.com/foo-origin/ ).

Der MSDN-Artikel zum Einrichten mit Web-Routing-Formularen erzählt Sie ein paar Änderungen an Web-Config zu machen, aber Blätter heraus, dass Sie brauchen, um Satz runAllManagedModulesForAllRequests auf true in den Modulen Knoten:

<configuration>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
  </system.webServer>
</configuration>

Jetzt funktioniert es swimmingly.

Andere Tipps

Sehen Sie die Antwort auf diese Frage, sehr ähnlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top