Я искал в Интернете примеры того, как создать 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.
что логично, так как мой модуль живет внутри другого класса.
Я был бы счастлив, если бы кто-то мог помочь мне решить эту проблему, и я надеюсь, что этот пост поможет коллегам-программистам в их день нужды.