我遇到了構建的自定義錯誤處理程序的問題。它應該是HttpModule
,但是當我將它添加到我的web.config
的system.webServer/modules
標記中時,它不會啓動。用於集成的IIS 7的自定義HttpModule
這是我web.config
部分:
<system.webServer>
<modules>
<add name="AspExceptionHandler"
type="Company.Exceptions.AspExceptionHandler, Company.Exceptions"
preCondition="managedHandler" />
</modules>
</system.webServer>
這是我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);
}
}
}
}
可能有人請向我解釋什麼,我做錯了,以及如何IIS 7的集成管理管道模式有效嗎?因爲我發現的大部分答案都是關於爲IIS 6配置HttpModules
。
感謝您的響應速度快,我沒有設置應用程序池管理的管道模式。我在本地機器上使用IIS Express試用了它,當這種情況不起作用時,我將該站點發布到了IIS 7的服務器。在那裏,我可以看到模塊正在加載,但它永遠不會被解僱。所以我正在做其他事情,我做錯了... – 2011-05-10 06:41:45
在我的web.config和一些乾淨/生成解決方案的語法錯誤,並在稍後發佈,它似乎工作... – 2011-05-11 13:13:14
@jonas - 不錯的一個:) – Kev 2011-05-11 13:14:20