2011-01-17 4 views
0

Wir haben eine Website, die wir vor kurzem auf SharePoint veröffentlicht haben. Ein Teil der Website musste nur direktes XML zurückgeben. Die Berater des Projekts implementierten die XML-Returns als ASPX-Seiten, die das Antwortobjekt in die page_load-Methode schreiben.Ist es möglich, einen Link, der mit ASPX endet, auf eine .ashx umzuleiten?

Nach einer kurzen Zeit, die dies erforscht, relize ich, dass dies wahrscheinlich der falsche Weg ist, dies zu tun, weil es alle zusätzlichen Ereignisse für eine ASPX-Seite aufruft, die wir nicht benötigen.

Hier ist meine Frage, ich möchte diese Funktionen als .ashx Links mit dem httphandler neu erstellen. Ich möchte jedoch in der Lage sein, die Originalverknüpfungen beizubehalten, die in ASPX enden, und die Get-Parameter, die sie begleiten, um zu entscheiden, welcher XML-Typ zurückgegeben werden soll.

Es ist möglich, die ASPX-Endlinks zu einem .ashx-Link umzuschreiben/umzuleiten. Oder würde dies dazu führen, dass der IIS-Server alle ASPX-Dateien falsch interpretiert?

Antwort

0

Ich glaube, du bist wahrscheinlich Glück ...

wir eine ähnliche Sache tat. Unsere E-Commerce-Webanwendung akzeptiert nur JPG-, PNG- und GIF-Dateien als Bilder für Produkte, aber wir wollten, dass jedes Bild dynamisch für jedes Produkt erstellt wird.

Also haben wir JPG, PNG und GIF-Dateien neu zugeordnet, um ein Handler zu werden.

Allerdings wollten wir nicht ALLE JPG, PNG und GIF-Dateien zugeordnet werden, da es für statische Dateien enorm ineffizient wäre, so dass wir nur bestimmte.

Hier ist, wie es geht.

Wenn alle Ihre ASPX-Dateien einer ähnlichen Dateispezifikation folgen, die KEINE anderen Dateien teilen, fügen Sie diese zu Ihrer web.config unter <httpHandlers> hinzu.

<add path="filespec*.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/> 

Wenn sie eine Dateispezifikation nicht alle tun, werden Sie sie one-by-one zu web.config hinzufügen:

<add path="oldaspx1.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/> 
<add path="oldaspx2*.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/> 
<add path="oldaspx3*.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/> 

Um dies zu, ob usuable zu machen oder nicht Sie sind in der IIS7 integrierten Pipeline laufen, könnten Sie auch analog das

Dann <handlers> Element hinzufügen, wenn eine Anfrage in für ‚oldaspx1.aspx‘ kommt, wird es behandelt bekommen (sehr ef (ohne den Seitenlebenszyklus gestartet zu werden) von Ihrem benutzerdefinierten Handler.

Wenn dies Ihr Problem löst, markieren Sie es bitte als die angenommene Antwort mit dem Häkchen auf der linken Seite.

Verwandte Themen