近期做了一个后台管理网站,后台页面都是Html页面,里面再通过ajax访问后台服务。要做到比较好的用户体验,即:如果用户没有登录或没有权限马上调到登录页面,而不是等到页面加载后再ajax时判断是否登录或权限再做跳转(这样给用户体验不好)。该如果实现呢?

首先想到的是自定义httpModule,拦截html请求,做权限认证。

本地调试没有问题,发布到IIS6后发现包含html文件再内的所有的静态资源都没有经httpModule处理,后来发现静态资源 IIS6直接返回,不通过asp.net管道处理。IIS7的集成模式默认所有的请求都会进入asp.net管道。这个问题如何解决呢?答案是通过配置IIS和web.config配置文件实现静态资源由asp.net管道处理。

一、首先iis6中右键站点属性->主目录->配置->应用程序配置

我用的是.net4.0,可执行文件填写的是c:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll,如果是2.0填写2.0的aspnet_isapi.dll即可。

动作可根据自己的需要定制。GET、POST、PUT、DELETE等

确认文件是否存在不勾选

二、web.config配置

1、system.web节点下的httpHandlers添加html处理器映射

  1. <system.web>
  2. <httpHandlers>
  3. <add verb="GET" path="*.html" type="System.Web.UI.PageHandlerFactory"/>
  4. </httpHandlers>
  5. </system.web>

2、system.web节点下的httpHandlers添加html编辑映射

  1. <system.web>
  2. <compilation>
  3. <buildProviders>
  4. <add extension=".html" type="System.Web.Compilation.PageBuildProvider"/>
  5. </buildProviders>
  6. </compilation>
  7. </system.web>

3、自定义httpModule过滤html,做相关功能验证

  1. <system.web>
  2. <httpModules>
  3. <add name="accountModule" type="tracePlatForm.WebApp.modules.accountModule"/>
  4. </httpModules>
  5. </system.web>

httpModule关键代码:

  1. public class accountModule : IHttpModule,IReadOnlySessionState
  2. {
  3. public void Dispose()
  4. {
  5. }
  6. public void Init(HttpApplication context)
  7. {
  8. context.BeginRequest += new EventHandler(checkLogin);
  9. }
  10. private void checkLogin(object sender, EventArgs e)
  11. {
  12. //自己的处理
  13. }
  14. }

至此所有必须的配置都已完成,你的站点可以过滤html文件请求了。

随机推荐

  1. data目录和binlog目录搬迁的方法

    刚开始安装时使用了默认目录,使用一段时间,数据慢慢变在,发现当前设置的目录空间不够时,就要搬迁数据到另一个目录了 如果全过程使用的是Mysql用户,应该可以正常启动. 如果用的ROOT用户,可能不能正 ...

  2. 修复错误配置/etc/fstab文件导致系统无法正常启动

      1.文件介绍 /etc/fstab这个文件描述系统中各种文件系统的信息,应用程序读取这个文件,然后根据其内容进行自动挂载的工作.作为系统配置文件,fstab通常都位于/etc目录下,它包括了所有分 ...

  3. Linux系统登录:本地登录与远程登录

    安装登录系统的位置可以将登录方式分为两种:本地登录和远程登录.本地登录可以使用图形界面和命令行模式(也称字符界面)两种方式:远程登录可以使用SSH.Telnent.VNC.SFTP 4种方式. 常见的 ...

  4. NGUI所见即所得之深入剖析UIPanel,UIWidget,UIDrawCall底层原理

    NGUI所见即所得之深入剖析UIPanel,UIWidget,UIDrawCall底层原理 By D.S.Qiu 尊重他人的劳动,支持原创,转载请注明出处:http.dsqiu.iteye.com 之 ...

  5. iOS开发之UITableView的使用

    这一篇记录的是iOS开发中UITableView的使用,iOS中的UITableView跟Android中的ListView特别相似,以下用一个Demo来说明: 1.Xcode中新建projectTe ...

  6. Windows Phone ProgressRing 控件

    在windows phone 8中,只有ProgressBar的控件,而没有圆环形的等待控件.今天我突发奇想,从Windows Store 的ProgressRing控件上copy下来的XAML 代码 ...

  7. MyEclipse连接sqlserver2008具体流程

    参照这里: 图形连接  http://wenku.baidu.com/view/f50838086c85ec3a87c2c53a.html 还有查看的是这个:   2. 重新用Window验证方式登陆 ...

  8. 用vue开发顶端粘滞效果的页面

    概述 通常一个长的页面,需要滚动浏览,有部分重要信息会随着滚动而看不见,因此需要粘滞在顶端,而又不影响滚动浏览,这个demo基于vue2,实现这个需求. 详细 代码下载:http://www.demo ...

  9. 火狐浏览器(firefox)中js要注意的问题

    1.出现错误调用error方法或者ajax请求了多次,那么极有可能是异步请求的原因. 添加   async  : false  , -> async. 默认是 true,即为异步方式,$.aja ...

  10. python --正则学习

    re的正则表达式语法    正则表达式语法表如下: re.match re.match 尝试从字符串的开始匹配一个模式,匹配成功返回match object,否则返回None. 如:下面的例子匹配第一 ...