Я написал следующий модуль HTTP для перехвата ВСЕХ исключений:
namespace Code.CapEx.Web.Framework.Http.Modules
{
public class ExceptionHandlingModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.Error += OnError;
}
private static void OnError(object sender, EventArgs e)
{
var exc = HttpContext.Current.Server.GetLastError();
ProcessException(exc.InnerException);
}
private static void ProcessException(Exception exception)
{
HttpContext.Current.Items["LastError"] = exception;
EntLogger.Instance.Error(exception);
if (exception is PermissionsException)
{
HttpContext.Current.Response.Redirect("~/_layouts/MyProject/NotAuthorized.aspx");
}
else
{
HttpContext.Current.Server.Transfer("~/_layouts/MyProject/Error.aspx");
}
}
}
}
Он отлично работает на моей машине разработчика (без sharepoint) и действительно перехватывает все исключения.
Нона машине QA, где этот сайт работает в папке sharepoint 2010, исключения не перехватываются вообще!
В чем может быть источник проблемы?(Я не забыл зарегистрировать модуль http в web.config;))