我想完全在代碼中爲ASP.NET MVC網站配置ELMAH。這包括註冊模塊,設置日誌提供程序和設置以及過濾異常。是否可以在代碼中完全配置ELMAH?
到目前爲止,我設法做的唯一的部分是過濾器例外。有沒有人想出瞭如何做到這一點?我真的想避免使用永遠不會改變的設置來混亂我的配置文件。
我想完全在代碼中爲ASP.NET MVC網站配置ELMAH。這包括註冊模塊,設置日誌提供程序和設置以及過濾異常。是否可以在代碼中完全配置ELMAH?
到目前爲止,我設法做的唯一的部分是過濾器例外。有沒有人想出瞭如何做到這一點?我真的想避免使用永遠不會改變的設置來混亂我的配置文件。
ELMAH作爲自定義HTTP模塊和HTTP處理程序運行。據MSDN:你已經創建了一個自定義HTTP 處理類
後,必須在 Web.config文件中註冊。這使得 ASP.NET能夠調用 中的HTTP處理程序,以便爲具有指定文件 名稱擴展名的 資源的請求提供服務。
你怎麼註冊一個HTTP處理程序 依賴於互聯網 信息服務(IIS)的版本承載 您的應用程序。對於IIS 6.0,您通過使用Web.config 文件的 httpHandlers部分來註冊處理程序 。對於以傳統 模式運行的IIS 7.0,請在httpHandlers部分註冊處理程序 ,並將 處理程序映射到Aspnet_isapi.dll文件。 對於以集成的 模式運行的IIS 7.0,請使用 system.WebServer部分中的處理程序元素向 註冊處理程序。
Rick Strahl has a blog post其中他以編程方式註冊HttpModule。我想可能有可能在ELMAH中使用類似的技術。
Link to the original bug/feature in google code.
Link to a google groups discussion giving basic sample code for implementing the service container.
static ServiceProviderQueryHandler
CreateServiceProviderQueryHandler(IServiceProvider sp) {
return context => {
var container = new ServiceContainer(sp);
var log = new SqlErrorLog("…connection string…");
container.AddService(typeof(ErrorLog), log);
return container;
}
}
布萊恩 - 這不就是一個配置文件的點,存儲的東西,不要」不時或經常改變?經常變化的東西,你會想要在你的代碼庫中。只是一個想法... – Tommy 2010-06-22 19:57:28
我推出了ASP.NET MVC系統的多個實例給許多客戶端。因此,我想保持配置文件儘可能簡單。 – 2010-06-22 21:15:21
@Tommy:我認爲你的意思是相反的。 – 2010-06-22 22:28:01