zoukankan      html  css  js  c++  java
  • 在处理HttpHandler时要注意的几个问题

    今天在网上找了一个处理URL重写的例子,原理使用Asp.Net中的HttpHandler实现URL重写的,当URL的后缀是XXX.shtml,而且XXX必须是数字的时候进行处理:

    using System;
    using System.Web;
    using System.Text.RegularExpressions;

    namespace test
    {
        
    public class NewHttpHandler:IHttpHandler
        
    {
            
    public void ProcessRequest(HttpContext Context)
            
    {
                
    try
                
    {
                    
    //申明Request
                    HttpRequest Request = Context.Request;
                    
    //取来路Url的绝对路径
                    string Url = Request.Url.AbsolutePath;
                    
    //取访问的Web文件的开始字符间隔数
                    int RegStart = Url.LastIndexOf("/"+ 1;
                    
    //申明一个确定Web文件名是否全是数字
                    Regex Reg = new Regex(@"\d+");
                    
    //用正则表达式进行匹配
                    if (Reg.IsMatch(Url, RegStart))
                    
    {
                        
    //如果web文件名是数字,则判定是查询相关文章,执行指定页面
                        Context.Server.Execute("~/PermaLink.aspx?id=" + Reg.Match(Url, RegStart).Value);
                    }

                }

                
    catch
                
    {
                    Context.Response.Redirect(Context.Request.Url.ToString());
                }

                
            }


            
    /// <summary>
            
    /// 获取一个值,该值指示其他请求是否可以使用 IHttpHandler 实例。
            
    /// </summary>

            public bool IsReusable 
            
    {
                
    get 
                
    {
                    
    return true;
                }

            }

        }

        
    }

    然后是配置web.config的 <httpHandlers>节点:
         <httpHandlers>
            
    <add verb="*" path="*.shtml" type="test.NewHttpHandler,test" />
        
    </httpHandlers>

    接着配置IIS,刚刚开始的时候怎么也不能得到结果,郁闷……
    最后发配置时的两个问题:
    1.<httpHandlers>节点的写法:type="处理HttpHander的类的完全名称即命名空间+类名,程序集名称"
    2.IIS中在Web项目的属性中,在主目录选项卡里,把执行权限改为"脚本和可执行文件",然后打开配置,*.shtml默认情况下处理程序是C:\WINDOWS\system32\inetsrv\ssinc.dll,如果要让ASP.net处理应改为C:\WINDOWS\system32\inetsrv\ssinc.dll,去掉检查文件是否存在的复选框
    3.如果要改其他扩展名也是一样的道理,注意上面两个问题就是了
  • 相关阅读:
    gitlab介绍
    git-代码分支管理
    git-基础命令使用
    theano 实现gpu和矩阵运算 基础上开发了pylearn2 .更模块化了,深度学习分成了3步。1,创建数据库,存pkl。2 训练。3 看一下学习模型。 yaml文件里存神经网络结构。
    c# 对象赋值踩坑
    c# 保存文件名重复,追加(1)(2)......
    C# 获取文件的后缀,文件名和路径
    Linux下,java格式化日期
    java中运用subList的做简单分页操作
    js生成二维码,支持打印显示
  • 原文地址:https://www.cnblogs.com/jintan/p/557580.html
Copyright © 2011-2022 走看看