Mam problemy z niestandardową obsługą błędów, którą zbudowałem. Powinien to być HttpModule
, ale kiedy dodaję go do mojego tagu web.config
, system.webServer/modules
, nie jest on inicjowany.Niestandardowy moduł HttpModule dla IIS 7 dla zintegrowanego
To mój web.config
sekcja:
<system.webServer>
<modules>
<add name="AspExceptionHandler"
type="Company.Exceptions.AspExceptionHandler, Company.Exceptions"
preCondition="managedHandler" />
</modules>
</system.webServer>
Jest to kod w moim HttpModule
:
using System;
using System.Web;
using Company.Settings;
using System.Configuration;
namespace Company.Exceptions
{
public class AspExceptionHandler : IHttpModule
{
public void Dispose() { }
public void Init(HttpApplication application)
{
application.Error += new EventHandler(ErrorHandler);
}
private void ErrorHandler(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext currentContext = application.Context;
// Gather information5
Exception currentException = application.Server.GetLastError();
String errorPage = "http://www.mycompaniesmainsite.com/error.html";
HttpException httpException = currentException as HttpException;
if (httpException == null || httpException.GetHttpCode() != 404)
{
currentContext.Server.Transfer(errorPage, true);
}
else
{
application.Response.Status = "404 Not Found";
application.Response.StatusCode = 404;
application.Response.StatusDescription = "Not Found";
currentContext.Server.Transfer(errorPage, true);
}
}
}
}
Czy ktoś mógłby wyjaśnić mi, co robię źle i jak IIS 7 Zintegrowany Zarządzane Tryb Pipeline działa? Ponieważ większość odpowiedzi, które znalazłem, dotyczy konfiguracji HttpModules
dla IIS 6.
Dzięki za szybką odpowiedź, ja ustawić pulę aplikacji w trybie zarządzanym rurociągu. Wypróbowałem to przy użyciu ekspresu IIS na mojej maszynie lokalnej, a kiedy to nie zadziałało, opublikowałem witrynę na serwerze z usługami IIS 7. Tam widziałem moduł ładowany, ale nigdy nie został wyrzucony. Więc gessing jej coś innego robię źle ... –
Błąd składni w moim web.config i niektóre czyste/kompilacji rozwiązanie i publikuje później, wydaje się działać ... –
@jonas - nice one :) – Kev