Регистрация httpModules в web.config
Я пытаюсь зарегистрировать пользовательский HttpHandler в файле web.config. Пример MSDN показывает запись, которая закомментирована... um, которая не работает так хорошо. Когда я раскомментирую, я получаю ошибку Could not load file or assembly 'HttpModule.cs' or one of its dependencies. The system cannot find the file specified.
. Имя файла - HttpModule.cs, а имя класса - MyHttpModule. Пока нет явного пространства имен.
<httpModules>
<add name="MyHttpModule" type="MyHttpModule, HttpModule" />
<httpModules>
Я уверен, что я игнорирую очевидное. Мне нужно указать путь к файлу где-нибудь? Спасибо заранее.
Ответы
Ответ 1
Я все еще изучаю большую часть терминологии и нуждаюсь в этом для меня. В случае, если кому-то из вас понадобится то же самое...
В качестве примера, если:
- Имя базового класса и имя проекта
TestSite
- Пространство имен, в котором находится мой класс, находится
BusinessLogic
- Имя класса
PageAuthorization
в файле Web.config...
<configuration>
<system.web>
<httpModules>
<add type= "BusinessLogic.PageAuthorization, TestSite" name="PageAuthorization" />
</httpModules>
</system.web>
</configuration>
В моем случае я должен был пометить свой класс IHttpModule
. Определение класса будет выглядеть так:
public class PageAuthorization : IHttpModule
Ответ 2
Значение type
находится в формате {Class}, {assembly}
.
Итак, в вашем случае это должно быть MyHttpModule, MyDllName
Где MyDllName
- имя скомпилированной библиотеки DLL.
Ответ 3
Если вы загружаете пользовательский модуль из классического режима .NET 4.0 GAC и IIS 6/7, вы должны использовать ниже код
<system.web>
<httpModules>
<add name="ClientHttpModule" type="ClientServHttpModule.ClientHttpModule,ClientServHttpModule,Version=1.0.0.0, Culture=neutral, PublicKeyToken=3af8d8e2f9e8b6c3" />
</httpModules>
</system.web>
ClientServHttpModule - это пространство имен вашего настраиваемого модуля.
Ключ открытого ключа вы можете получить из приложения sn.exe.
если вы работаете в режиме Integrated.use ниже кода
<system.webServer>
<modules>
<add name="ClientHttpModule" type="ClientServHttpModule.ClientHttpModule,ClientServHttpModule,Version=1.0.0.0, Culture=neutral, PublicKeyToken=3af8d8e2f9e8b6c3" />
</modules>
</system.webServer>
Ответ 4
Чтобы добавить к этому, важно убедиться, что .dll, который вы пытаетесь использовать, находится в папке bin проекта. У меня возникла проблема создания моего модуля в отдельном проекте, но я забыл пропустить файл .dll.
Ответ 5
Примечание для людей, приземляющихся здесь, ища конфигурацию для IIS 7 и выше для работы в Интегрированном режиме:
<configuration>
<system.webServer>
<modules>
<add type= "BusinessLogic.PageAuthorization, TestSite" name="PageAuthorization" />
</modules>
</system.webServer>
</configuration>