2009-09-18 16 views
14

Próbuję zarejestrować niestandardowy HttpHandler w pliku web.config. MSDN's Przykład pokazuje wpis, który jest komentowany ... um, który nie działa tak dobrze. Po odkomentowaniu otrzymuję komunikat o błędzie Could not load file or assembly 'HttpModule.cs' or one of its dependencies. The system cannot find the file specified.. Nazwa pliku to HttpModule.cs, a nazwa klasy to MyHttpModule. Nie ma jeszcze wyraźnej przestrzeni nazw.rejestrowanie httpModules w web.config

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

jestem pewien jestem widokiem oczywiste. Czy muszę gdzieś podać ścieżkę do pliku? Z góry dziękuję.

Odpowiedz

13

Nadal uczę się dużo terminologii i potrzebuję tego, co napisano dla mnie. W przypadku, gdy któryś z was potrzebują takiego samego ...

Jako przykład, jeżeli:

  • Nazwa klasy bazowej i nazwa projektu jest TestSite
  • Przestrzeń nazw moja klasa jest to BusinessLogic
  • Nazwa klasy jest PageAuthorization

w pliku Web.config ...

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

W moim przypadku musiałem oznaczyć moją klasę na IHttpModule. Definicja klasy wyglądałby następująco:

public class PageAuthorization : IHttpModule 
+3

Co zrobić, jeśli mój plik modułu w folderze App_Code witryny sieci Web? –

12

Wartość type ma format {Class}, {assembly}.

Więc w twoim przypadku, powinno być MyHttpModule, MyDllName

MyDllName Gdzie jest nazwą skompilowanego pliku DLL.

+1

Przepraszam za moją niewiedzę w tym, ale muszę wyraźnie kompilowania pliku cs do dll w celu regsiter go w pliku web.config ? – Praesagus

+0

Może to być częścią projektu internetowego, wystarczy znać nazwę skompilowanego zespołu. –

+0

W jaki sposób chciałbym go znaleźć, a następnie, co chciałbym wprowadzić jako mój regsitration? – Praesagus

2

Aby dodać do tego, że ważne jest, aby mieć pewność, że .dll próbujesz użyć, znajduje się w folderze bin projektu. Miałem problem z utworzeniem mojego modułu w osobnym projekcie, ale zapomniałem przepchnąć plik .dll.

1

Uwaga dla osób lądujących tu w poszukiwaniu konfiguracji dla IIS 7 i powyżej działa w trybie zintegrowanym:

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

@Rishi Mogę użyć pomocy w konfiguracji systemu. Webserver. Jeśli którykolwiek z was może pomóc, zobacz mój nowy post tutaj na http://stackoverflow.com/questions/27354083/web-config-system-webserver-errors – te7

7

Jeśli ładujesz moduł niestandardowy z .NET 4.0 i IIS 6/7 GAC tryb klasyczny trzeba użyj poniższego kodu:

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

ClientServHttpModule to przestrzeń nazw twojego własnego modułu. Klucz publiczny to klucz, który można pobrać z aplikacji sn.exe.

jeśli używasz w Zintegrowanym mode.use poniżej kod

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