Я пытаюсь перехватить ошибки, произошедшие на всех сайтах веб-сервера, чтобы делать другие полезные вещи, такие как ведение журнала.Пользовательский модуль обработки ошибок http
В качестве отправной точки, я
- Создан модуль HTTP, который крепит обработчик события к событию ошибки сайтов.
- Создан тестовый проект MVC с набором методов действий, исключающих исключения.
- Добавлен созданный DLL-класс класса http в GAC.
Http библиотека классов модуля реализована как:
Я создал проект библиотеки классов с только один класс расширения IHttpModule. Обратите внимание, что это просто упрощенная версия.
using System;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Web;
namespace MyWebModules
{
[ComVisibleAttribute(true)]
public class MyErrorModule : IHttpModule
{
public void Dispose()
{
throw new NotImplementedException();
}
public void Init(HttpApplication context)
{
context.Error += new EventHandler(OnError);
}
private void OnError(object sender, EventArgs e)
{
throw new Exception("Custom exception from MyErrorModule");
//TODO removed the above exception and add real life code here.
}
}
}
Я добавил DLL в GAC, с помощью процесса ниже:
- Использование csc.exe, я получаю файл ".netmodule" от ".cs" код файл
- Файл .snk относится к проекту.
- al.exe нуждается в «.netmodule» и «.snk», чтобы дать сильное имя .dll
- С прочным именем .dll имеет квалификацию, которая будет добавлена в GAC.
Тестирование с использованием тестового проекта MVC.
Сайт испытания web.config имеет следующий раздел.
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="MyCustomWebModules" />
<add name="MyCustomWebModules" type="MyWebModules.MyErrorModule,MyWebModules" />
</modules>
</system.webServer>
Когда я получить доступ к тест MVC сайт, я ожидал увидеть ошибку, которая говорит: «Custom исключение из MyErrorModule»
Вместо этого я получаю эту ошибку:
«Не удалось загрузить файл или сборку «MisWebModules» или одну из ее зависимостей. Система не может найти указанный файл ».
Прежде всего, вы должны проверить свое определение модуля http в web.config. Указывает ли оно имя сборки и токен открытого ключа правильно? Если да, включите и проверьте журналы слияния. Это даст подробный отчет о том, почему процесс загрузки сборки не удался –
Да У меня есть этот раздел в моем web.config. и моя машина dev использует IIS7.5, поэтому теги модулей должны быть точными. –
Время Fusion, то я думаю –