有没有一种好方法可以排除某些页面使用HTTP模块?
我有一个使用自定义HTTP模块验证会话的应用程序.HTTP配置在web配置中设置如下:
<system.web>
<!-- ... -->
<httpModules>
<add name="SessionValidationModule"
type="SessionValidationModule, SomeNamespace" />
</httpModules>
</system.web>
Run Code Online (Sandbox Code Playgroud)
要从页面中排除模块,我尝试这样做(没有成功):
<location path="ToBeExcluded">
<system.web>
<!-- ... -->
<httpModules>
<remove name="SessionValidationModule" />
</httpModules>
</system.web>
</location>
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
小智 14
HttpModules附加到ASP.NET请求处理管道本身.httpModule本身必须注意确定它想要处理哪些请求以及它想要忽略哪些请求.
例如,这可以通过查看context.Request.Path属性来实现.
Cro*_*rob 11
您可以使用HTTPHandler而不是HTTPModule.处理程序允许您在Web.Config中声明它们时指定路径.
<add verb="*" path="/validate/*.aspx" type="Handler,Assembly"/>
Run Code Online (Sandbox Code Playgroud)
如果必须使用HTTPModule,则只需检查请求的路径,如果要排除该请求,则绕过验证.
下面是一些如何通过扩展来过滤请求的简单示例...以下示例从具有特定扩展名的处理文件中排除.通过文件名过滤看起来几乎与一些小的变化相同......
public class AuthenticationModule : IHttpModule
{
private static readonly List<string> extensionsToSkip = AuthenticationConfig.ExtensionsToSkip.Split('|').ToList();
// In the Init function, register for HttpApplication
// events by adding your handlers.
public void Init(HttpApplication application)
{
application.BeginRequest += new EventHandler(this.Application_BeginRequest);
application.EndRequest += new EventHandler(this.Application_EndRequest);
}
private void Application_BeginRequest(Object source, EventArgs e)
{
// we don't have to process all requests...
if (extensionsToSkip.Contains(Path.GetExtension(HttpContext.Current.Request.Url.LocalPath)))
return;
Trace.WriteLine("Application_BeginRequest: " + HttpContext.Current.Request.Url.AbsoluteUri);
}
private void Application_EndRequest(Object source, EventArgs e)
{
// we don't have to process all requests...
if (extensionsToSkip.Contains(Path.GetExtension(HttpContext.Current.Request.Url.LocalPath)))
return;
Trace.WriteLine("Application_BeginRequest: " + HttpContext.Current.Request.Url.AbsoluteUri);
}
}
Run Code Online (Sandbox Code Playgroud)
一般的想法是在配置文件中指定应该处理(或从处理中排除)的确切内容,并在模块中使用该配置参数.
| 归档时间: |
|
| 查看次数: |
10745 次 |
| 最近记录: |