我一直在网上搜索如何创建HttpModule的例子, 因为我想在我正在开发atm的网站中使用一个。 我发现的所有例子看起来都很简单,但是在开始时我很难实现。
这是一个示例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 :(得分:0)
结果是我使用命名空间的类型而不是使用命名空间限定的类名。换句话说,在我的web.config中我有
<add type="SampleModules.SampleModule,SampleModules" name="TimeElapsedModule" />
而不是
<add type="Test.SampleModules.SampleModule,App_Code" name="TimeElapsedModule" />