2011-11-05 60 views
0

我一直在網上搜索如何創建一個HttpModule, 的例子,因爲我想在網站中使用我正在開發atm。 我發現的所有例子都很簡單,但很難實現,然後我在開始。IIS7自定義HttpModule的網站 - 如何

這裏是一個樣本的HttpModule:

public class SampleModule : IHttpModule 
{ 
    DateTime beginrequest; 
    public void Init(HttpApplication app) 
    { 
     // register for events created by the pipeline 
     app.BeginRequest += new EventHandler(this.OnBeginRequest); 
     app.EndRequest += new EventHandler(this.OnEndRequest); 
    } 
    public void Dispose() { } 
    public void OnBeginRequest(object o, EventArgs args) 
    { 
     // obtain the time of the current request 
     beginrequest = DateTime.Now; 
    } 
    public void OnEndRequest(object o, EventArgs args) 
    { 
     // get the time elapsed for the request 
     TimeSpan elapsedtime = DateTime.Now - beginrequest; 
     // get access to application object and the context object 
     HttpApplication app = (HttpApplication)o; 
     HttpContext ctx = app.Context; 
     // add header to HTTP response 
     ctx.Response.AppendHeader("ElapsedTime", elapsedtime.ToString()); 
    } 
} 

實現模塊本來應該像這樣(由所有的例子我已經找到):

<configuration> 
    <system.web> 
     <httpModules> 
      <add name="TimeElapsedModule" type="SampleModules.SampleModule,SampleModules "/> 
     </httpModules> 
    </system.web> 
</configuration> 

但IIS7這個心不是吧!在IIS7你應該做的:

<system.webServer> 
     <modules> 
      <add name="TimeElapsedModule" type="SampleModules.SampleModule,SampleModules"/> 
     </modules> 
    </system.webServer> 

現在,搞清楚了這一點後,我遇到了,我似乎沒有找到一個解決的另一個問題。 我收到以下錯誤:

Could not load file or assembly 'SampleModules' or one of its dependencies. The system cannot find the file specified. 

這是合乎邏輯的,因爲我的生活模塊另一個類裏面。 如果有人能夠幫助我解決這個問題,我會很高興,我希望這篇文章能夠幫助他們的研究員在他們需要的日子。

回答

0

原來我使用的是命名空間類型,而不是使用命名空間限定的類名。在我的web.config換句話說,我不得不

<add type="SampleModules.SampleModule,SampleModules" name="TimeElapsedModule" /> 

,而不是

<add type="Test.SampleModules.SampleModule,App_Code" name="TimeElapsedModule" />