网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

使用HttpModule实现多个域名分别“绑定”到子目录

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
Init(HttpApplication app) {///**********************************************************************************/// Author:活靶子,huobazi/// Date:2005-08-18/// Description:增加BeginRequest,在内增加防止黑客可能利用的某些Url漏洞攻击的代码///**********************************************************************************app.BeginRequest += new EventHandler(this.RewriterModule_BeginRequest);// 警告!此代码不适用于 Windows 身份验证!// 如果使用 Windows 身份验证,// 请改为 app.BeginRequestapp.AuthorizeRequest += new EventHandler(this.RewriterModule_AuthorizeRequest);}
protected virtual void RewriterModule_BeginRequest(object o , EventArgs e){HttpApplication app = ((HttpApplication)(o)); HttpServerUtility Server = app.Server; HttpRequest Request = app.Request; ///************************************************************///  Author:活靶子,huobazi/// Date:2005-08-18/// Description:修补黑客可能采用".."的方法进入其他目录的问题///************************************************************string strURL = Server.UrlDecode(Request.RawUrl); if (strURL.IndexOf("..") != -1) { throw new HttpException(404, "Not Found"); } ///**********************************************************************************///  Author:活靶子,huobazi/// Date:2005-08-18/// Description:修补"规范化"问题 see: http://support.microsoft.com/?kbid=887459///***********************************************************************************if (Request.Path.IndexOf(''\\'') >= 0 ||Path.GetFullPath(Request.PhysicalPath) != Request.PhysicalPath) {throw new HttpException(404, "Not Found");}} 
三。开始匹配域名
protected void Rewrite(string requestedPath, System.Web.HttpApplication app){string host = app.Context.Request.Url.Host.ToString().ToLower();app.Context.Trace.Write("RewriterModule", "Entering ModuleRewriter");   RewriterRuleCollection rules = RewriterConfiguration.GetConfig().Rules; for(int i = 0; i < rules.Count; i++){//将MulitDomain.config内定义的规则LookFor的值逐个匹配当前主机名判断否被定义了需要重写//如果匹配则需要重写,那将请求重写到SendTo定义的目录内的该文件string lookFor = "^" + rules[i].LookFor + "$";//string lookFor = "^" + Rewriter.ResolveUrl(app.Context.Request.ApplicationPath, rules[i].LookFor + requestedPath) + "$";Regex re = new Regex(lookFor, RegexOptions.IgnoreCase);if (re.IsMatch(host)){string sendToUrl = Rewriter.ResolveUrl(app.Context.Request.ApplicationPath,  rules[i].SendTo + requestedPath);app.Context.Trace.Write("RewriterModule", "Rewriting URL to " + sendToUrl);Rewriter.RewriteUrl(app.Context, sendToUrl);break;}} app.Context.Trace.Write("RewriterModule", "Exiting ModuleRewriter");}
四。写规则文件
MulitDomain.config的匹配规则如下:
<?xml version="1.0" encoding="utf-8" ?>
 <RewriterConfig>
 <Rules>
  <RewriterRule>
   <LookFor>www\.xaradio\.com</LookFor>
   <SendTo>~/xaradio</SendTo>
  </RewriterRule>
  <RewriterRule>
  &n
  • 下一篇资讯: session和viewstate的比较
  • 网学推荐

    免费论文

    原创论文

    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号