html 处理
近期做了一个后台管理网站,后台页面都是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处理器映射
- <system.web>
- <httpHandlers>
- <add verb="GET" path="*.html" type="System.Web.UI.PageHandlerFactory"/>
- </httpHandlers>
- </system.web>
2、system.web节点下的httpHandlers添加html编辑映射
- <system.web>
- <compilation>
- <buildProviders>
- <add extension=".html" type="System.Web.Compilation.PageBuildProvider"/>
- </buildProviders>
- </compilation>
- </system.web>
3、自定义httpModule过滤html,做相关功能验证
- <system.web>
- <httpModules>
- <add name="accountModule" type="tracePlatForm.WebApp.modules.accountModule"/>
- </httpModules>
- </system.web>
httpModule关键代码:
- public class accountModule : IHttpModule,IReadOnlySessionState
- {
- public void Dispose()
- {
- }
- public void Init(HttpApplication context)
- {
- context.BeginRequest += new EventHandler(checkLogin);
- }
- private void checkLogin(object sender, EventArgs e)
- {
- //自己的处理
- }
- }
至此所有必须的配置都已完成,你的站点可以过滤html文件请求了。
随机推荐
- Android Activity的生命周期的几个方法介绍
onCreate():创建Activity调用,用于Activity的初始化,还有个Bundle类型的参数,可以访问以前存储的状态. onStart():Activity在屏幕上对用户可见时调用 on ...
- C#基础视频教程2 常见数据类型和属性方法
记住只要掌握常用的几种数据类型即可(比如Single就很少用了,要用浮点数一般就用Double,现在的计算机内存已经大到不需要你去考虑优化什么了) 比如仅仅是整形就有9种,实际上我们只需要知道int和 ...
- java记录linux top命令信息
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- 苹果开发——Xcode证书生成、设置及应用
原地址:http://zengwu3915.blog.163.com/blog/static/2783489720137483422530/ 开发环境: Mac OS lion 10.8.2.Xcod ...
- [Swift A] - Welcome to Swift
Swift is a new object-oriented programming language for iOS and OS X development. Swift is modern, p ...
- 如何成为一位黑客 ( How To Become A Hacker )
http://blog.csdn.net/jarodlau/article/details/337891 How To Become A Hacker 如何成为一位黑客(转载) 这真是一个好问题,不止 ...
- Linux命令-更新系统时间和硬件时间
查看系统时间和时区: date 查看系统时间date -R 查看时区 修改时区: tzselect 修改时区 或 cp /usr/share/zoneinfo/Asia/Shanghai /etc/l ...
- c#中用DirectShow实现媒体播放器
原文地址:https://www.cnblogs.com/aiqingqing/p/4338448.html 用.net做多媒体开发的似乎不多,所以网上资源也少,看的人更少.不过我的博客上居然还有几位 ...
- SQL 横转竖 、竖专横 (转载) 使用Dapper.Contrib 开发.net core程序,兼容多种数据库 C# 读取PDF多级书签 Json.net日期格式化设置 ASPNET 下载共享文件 ASPNET 文件批量下载 递归,循环,尾递归 利用IDisposable接口构建包含非托管资源对象 《.NET 进阶指南》读书笔记2------定义不可改变类型
SQL 横转竖 .竖专横 (转载) 普通行列转换 问题:假设有张学生成绩表(tb)如下: 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 ...
- windows 2003 如何实现远程桌面与本地桌面统一
最近在使用XP对2003服务器进行远程管理的时候,发现远程桌面与本地桌面不一致,本身在本地桌面开启的程序例如杀毒软件防火墙之类的,在远程桌面居然看不到,同时在远程桌面开启的程序,跑到服务器本地桌面也看 ...