2009-09-18 14 views
14

Sto tentando di registrare un HttpHandler personalizzato nel file web.config. MSDN's esempio mostra una voce che è commentata ... e che non funziona così bene. Quando taccio il commento, ricevo un errore Could not load file or assembly 'HttpModule.cs' or one of its dependencies. The system cannot find the file specified.. Il nome del file è HttpModule.cs e il nome della classe è MyHttpModule. Non esiste ancora uno spazio dei nomi esplicito.registrazione di httpModules in web.config

<httpModules> 
    <add name="MyHttpModule" type="MyHttpModule, HttpModule" /> 
<httpModules> 

Sono sicuro che sto trascurando l'ovvio. Devo specificare il percorso del file da qualche parte? Grazie in anticipo.

risposta

13

Sto ancora imparando molto della terminologia e avevo bisogno che fosse scritto per me. Nel caso in cui qualcuno di voi hanno bisogno lo stesso ...

Ad esempio se:

  • Il nome della classe di base e il nome del progetto è TestSite
  • Lo spazio dei nomi mia classe è in è BusinessLogic
  • Il nome della classe è PageAuthorization

nel file web.config ...

<configuration> 
<system.web> 
    <httpModules> 
    <add type= "BusinessLogic.PageAuthorization, TestSite" name="PageAuthorization" /> 
    </httpModules> 
</system.web> 
</configuration> 

Nel mio caso ho dovuto contrassegnare la mia classe con IHttpModule. La definizione della classe sarà simile:

public class PageAuthorization : IHttpModule 
+3

Cosa fare se il mio modulo file nella cartella App_Code del sito web? –

12

Il valore type è nel formato {Class}, {assembly}.

Quindi nel tuo caso, dovrebbe essere MyHttpModule, MyDllName

Dove MyDllName è il nome della DLL compilata.

+1

Mi dispiace per la mia ignoranza in questo, ma ho bisogno di compilare in modo esplicito il file cs in una DLL per regsiter in web.config ? – Praesagus

+0

Può far parte del progetto web, devi solo conoscere il nome del gruppo compilato. –

+0

Come dovrei andare a trovarlo, e poi cosa dovrei inserire come mia regsitration? – Praesagus

2

Per aggiungere a questo, è importante essere sicuri che la dll si sta tentando di utilizzare è nella cartella del progetto bin. Ho avuto il problema di creare il mio modulo in un progetto separato, ma ho dimenticato di trasferire il file .dll.

1

Nota per le persone che atterrano qui in cerca di configurazione per IIS 7 e versioni successive in esecuzione in modalità di integrazione:

<configuration> 
<system.webServer> 
    <modules> 
    <add type= "BusinessLogic.PageAuthorization, TestSite" name="PageAuthorization" /> 
    </modules> 
</system.webServer> 
</configuration> 
+0

@Rishi Potrei usare l'aiuto con la configurazione di system.webserver. Se qualcuno di voi può aiutare, potete vedere il mio nuovo post qui su http://stackoverflow.com/questions/27354083/web-config-system-webserver-errors – te7

7

Se si sta caricando il modulo personalizzato da NET 4.0 GAC e IIS 6/7 modalità classica si deve utilizzare sotto il codice

<system.web> 
    <httpModules> 
    <add name="ClientHttpModule" type="ClientServHttpModule.ClientHttpModule,ClientServHttpModule,Version=1.0.0.0, Culture=neutral, PublicKeyToken=3af8d8e2f9e8b6c3" /> 
     </httpModules> 
</system.web> 

ClientServHttpModule è lo spazio dei nomi del modulo personalizzato. Token di chiave pubblica è possibile scaricarlo dall'app sn.exe.

se si esegue in mode.use integrato sotto il codice

<system.webServer> 
     <modules> 
      <add name="ClientHttpModule" type="ClientServHttpModule.ClientHttpModule,ClientServHttpModule,Version=1.0.0.0, Culture=neutral, PublicKeyToken=3af8d8e2f9e8b6c3" /> 
     </modules> 
    </system.webServer>