2011-01-15 5 views
3

Ich habe einen benutzerdefinierten HTTP-Handler entwickelt. Mit dem neuen web.config <httphandlers> Abschnitt für ASP.NET 4.0 und IIS7 funktioniert das auf meinem Entwicklungscomputer großartig.Problem mit HTTP-Handlern und IIS7

Wenn ich jedoch den Code auf mein Shared-Hosting-Konto hochladen, erhalte ich einen 500-Server-Fehler. Ich rief mein Hosting-Unternehmen an und sie sagten, dass der Server einen Fehler über eine Web.config-Einstellung gemeldet hat, die nicht für den integrierten Pipeline-Modus gilt.

Als er IIS vom integrierten in den klassischen Modus umstellte, wird die Homepage geladen, aber meine gerouteten Seiten melden alle einen 403 Serverfehler.

Ich bin mir ziemlich sicher, ich brauche integrierten Modus für die <httphandlers> Abschnitt zu arbeiten, aber ich bin definitiv kein IIS/admin guy. Hat jemand eine Idee, was das Problem sein könnte oder was ich als nächstes versuchen kann?

EDIT: Der Großteil meiner aktualisiert web.config:

<?xml version="1.0"?> 
<configuration> 
    <connectionStrings> 
     [...] 
    </connectionStrings> 
    <appSettings> 
     [...] 
    </appSettings> 
    <system.web> 
     <httpHandlers> 
      <add verb="*" path="*.zip" type="BlackBelt.ZipHttpHandler"/> 
     </httpHandlers> 
     <compilation debug="false" targetFramework="4.0"/> 
    </system.web> 
    <system.webServer> 
     <modules runAllManagedModulesForAllRequests="true"/> 
     <handlers> 
      <add verb="*" path="BlackBelt.ZipHttpHandler" name="BlackBelt.ZipHttpHandler" type="BlackBelt.ZipHttpHandler"/> 
     </handlers> 
     <!-- Redirect domain.com to www.domain.com --> 
     <rewrite> 
      <rules> 
       <clear/> 
       <rule name="WWW Rewrite" enabled="true"> 
        <match url="(.*)"/> 
        <conditions> 
         <add input="{HTTP_HOST}" negate="true" pattern="^www\.([.a-zA-Z0-9]+)$"/> 
        </conditions> 
        <action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" appendQueryString="true" redirectType="Permanent"/> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 
+1

Handler im IIS7 integrierten Modus geht unter , nicht

+0

und nein, ohne weitere spezifische Fehlermeldungen ist es fast unmöglich zu sagen, was das Problem sein könnte. –

+0

@Pauli: Danke - Ich habe ein paar Änderungen vorgenommen, nachdem ich http://forums.asp.net/p/1500622/3548870.aspx gelesen hatte, was andeutete, dass ich beide Abschnitte brauchte, aber ich bekomme die gleichen Ergebnisse. Ich habe den Großteil meiner web.config-Datei veröffentlicht. –

Antwort

6

Dank Pauli, konnte ich dies herauszufinden. Obwohl <system.web><httpHandlers> der Abschnitt ist, den ich ändern muss, damit er funktioniert, wenn er von Visual Studio aus ausgeführt wird, muss der Abschnitt <system.webServer><handlers> geändert werden, damit er funktioniert, wenn er auf dem Server ausgeführt wird, auf dem IIS7 ausgeführt wird.

Ich habe eine E-Mail erhalten, in der genau gefragt wird, wie ich das gelöst habe. Ich habe einen Artikel geschrieben, der die genauen Schritte beschreibt und meinen Code präsentiert. Wenn jemand diesen Artikel sehen möchte, ist es unter http://www.blackbeltcoder.com/Articles/asp/writing-a-custom-http-handler-in-asp-net verfügbar.

+0

Arbeitete wie ein Zauber, danke! –