2009-10-15 16 views
5

Ich versuche, Anforderungen für klassische ASP-Seiten von .net behandelt werden, so dass es durch ein benutzerdefiniertes httpmodul ausgeführt wird.Zuordnen von klassischen ASP-Seiten zu .net in IIS

In IIS habe ich neu zugeordnet asp Anfragen an aspnet_isapi.dll - ich bin sicher, dass ich dieses Stück richtig

Jetzt in meinem Test-App gemacht habe ich immer diese Fehlermeldung:

Server Error in '/TestASPRedirect' Application. 
-------------------------------------------------------------------------------- 

This type of page is not served. 
Description: The type of page you have requested is not served because it has been explicitly forbidden. The extension '.asp' may be incorrect. Please review the URL below and make sure that it is spelled correctly. 

Requested URL: /testaspredirect/test.asp 

Searching online für diesen Fehler zeigt eine Last von Menschen mit Problemen mit Cassini, aber das ist nicht wirklich relevant, ich teste dies sowohl auf IIS 5.1 auf XP-Dev-Maschine, und habe auf IIS6 auch den gleichen Fehler bekommen getestet.

Ich habe Anweisungen zum Hinzufügen und Registrieren eines httphandler gefolgt (siehe http://support.microsoft.com/default.aspx?scid=kb;en-us;Q308001), aber ich weiß nicht, was in die ProcessRequest-Routine zu stellen, um sicherzustellen, dass die Anfrage weitergegeben wird. Was ist die Standard-.net Httphandler, kann ich dies in web.config Karte nur ?: so etwas wie:

<httpHandlers> 
    <add verb="*" path="*.asp" type="standard.nethttphandler"/> 
</httpHandlers> 

Wie kann ich asp.net sagen, dass es ASP-Anforderungen an passieren muss und nicht blockieren?

+0

ich das gleiche Problem habe, aber ich bin mit dem eingebauten in Cassini Webserver. Ich habe eine ASP.NET 2.0-Website (nicht Web-App), wo die Homepage und andere Seiten klassische ASP sind. Ich habe keinen Eintrag in meiner v2.0.50727 \ CONFIG \ web.config, die * .asp auf den verbotenen Handler abbildet. Soll ich einen neuen Thread öffnen oder reicht dieser Kommentar aus, um Hilfe zu bekommen? –

Antwort

2

Es sieht so aus, als ob die Erweiterung .asp der HttpForbiddenHandler zugeordnet ist.

Wenn Sie mit ASP.NET 1.1 dann die folgende Datei öffnen:

C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG\machine.config

Wenn Sie mit ASP.NET 2.0 dann diese Datei öffnen:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config

Suche nach " path="*.asp" ", dann kommentieren Sie diese Zeile. Es wird etwas wie mögen:

<!-- machine.config/ASP.NET 1.1--> 
<add path="*.asp" verb="*" 
    type="System.Web.HttpForbiddenHandler"/>` 

<!-- web.config/ASP.NET 2.0--> 
<add path="*.asp" verb="*" 
    type="System.Web.HttpForbiddenHandler" validate="true"/>` 
+0

Danke für die Antwort: Verwenden von 2.0/in web.config/kein Eintrag für .asp, (muss durch den Platzhaltereintrag abgefangen werden). Eine Zeile für .asp hinzugefügt, verschiedene Handler-Typen ausprobiert: Mit DefaultHttpHandler erhalten Sie den gleichen Fehler, StaticFileHandler versucht, die ASP-Seite in den Browser zu laden, .UI.PageHandlerFactory löst diesen Fehler aus: Es ist kein Build-Provider für die Erweiterung 'registriert. asp '. Sie können einen im Bereich registrieren .... Ich muss das jetzt lassen, werde aber später zurückkommen, um zu sehen, ob es irgendwie funktioniert. Vielleicht macht es keinen logischen Sinn, dies zu versuchen – DannykPowell

+0

@Kev - Ich habe das gleiche Problem mit etwas anderen Umgebung (siehe meinen Kommentar unter dem ursprünglichen Problemeintrag). Ich vermute, ich sollte neuen Thread öffnen, aber nicht sicher ... –

+0

@John - sehen, da Ihr Problem spezifisch für Cassini-Server ist, würde ich eine neue Frage öffnen. – Kev

2

Eigentlich sind Sie nur einen Schritt weit vom Erfolg entfernt. Hinzufügen folgenden Abschnitt Ihre lokale Website (oder ein virtuelles Verzeichnis) web.config-Datei:

<configuration> 
... 
<system.web> 
    <compilation> 
     <buildProviders> 
      <add extension=".asp" type="System.Web.Compilation.PageBuildProvider"/> 
     </buildProviders> 
    </compilation> 
    <httpHandlers> 
     <add path="*.asp" verb="*" type="System.Web.UI.PageHandlerFactory" validate="true"/> 
    </httpHandlers> 
</system.web> 

+0

Hey, das hat mir geholfen, meine Framework 4.5-Anwendung unter IIS Express zu testen, aber wenn ich auf den Produktionsserver umschalte, scheitert es ... Irgendeine Idee? – tomasofen

0

Suchen Sie die folgende Datei:

C:\WINDOWS\MICROSOFT.NET\FRAMEWORK\<FramworkVersion>\Config\web.config

wo <FramworkVersion> Ordnername:

öffnen Sie es in einem XML-Editor .. (auch Notizblock ist in Ordnung)

und fügen Sie unterhalb der Linie:

<add path="*.asp" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True"/> 

unter unter XPath:

configuration/system.web/httpHandlers

die bestehende ersetzen!

unterhalb der Linie hinzufügen:

<add extension=".asp" type="System.Web.Compilation.PageBuildProvider"/> 

unter unter XPath:

/configuration/system.web/compilation/buildProviders 

wie gem Arbeitete für mich :)

Verwandte Themen