zoukankan      html  css  js  c++  java
  • asp.net[web.config] httphandlers 与实现自由定义访问地址

    http://www.cnblogs.com/PiaoMiaoGongZi/p/5216089.html

    今天一起来看一个简单的例子,主要是用来实现一个映射功能,
    我们一般访问一个网址的时候比如是这样的
    http://localhost:6166/WebSite1/api/request.aspx?strtext=123

    那么大家一定都会说,在网站WebSite1的api目录下一定有request.aspx这样一个文件。
    那么我今天要告诉你的就是没有这个文件。如下图

    你没有看错,没有报任何的错误,
    那这是怎么回事呢。
    我们现在可以来看看这个目录下有一个Webconfig文件,咱们打开看一下

    复制代码
    <?xml version="1.0"?>
    <configuration>
      <!--IIS经典模式下使用-->
      <system.web>
        <httpHandlers>
          <add path="request.aspx" verb="*" type=" Bll.Handler.Test"/>
          <add path="test.aspx" verb="*" type=" Bll.Handler.Test"/>
        </httpHandlers>
      </system.web>
      <!--IIS集成模式下使用-->
      <!--<system.webServer>
        <handlers>
          <add name="request" path="request.aspx" verb="*" type=" Bll.Handler.Test"/>
          <add name="test" path="test.aspx" verb="*" type=" Bll.Handler.Test"/>
        </handlers>
      </system.webServer>-->
    </configuration>
    复制代码

    这是什么意思呢。
    这里面有两种配置,主要是适用于IIS的集成模式和经典模式,只是配置不同,暂时没有其他的不同点
    大家知道就行了,
    下面以经典模式来分析下吧

    <add path="request.aspx" verb="*" type=" Bll.Handler.Test"/>

    path这个呢就是我们访问的网页地址,就是上面输入的,我们找不到的那个文件名
    然后对应的处理程序是type=" Bll.Handler.Test"
    verb="*" 是指定接收的方式,*是Get,Post都可以,也可以直接写Post这样就只接收Post提交了。
    现在大家明白了吧
    你访问request.aspx其实访问的就是Bll.Handler.Test.cs
    看代码

    复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Web;
    using Bll;
     
    namespace Bll.Handler
    {
        class Test : IHttpHandler
        {
            public void ProcessRequest(HttpContext context)
            {
                //接收这个参数
                string strtext = context.Request["strtext"].Trim();
                //输出这个参数
                context.Response.Write(strtext);
            }
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }
    复制代码

    我的Webconfig有两个配置意思就是说我们可以给这个Test.cs文件定义多个文件名来访问,这样前台怎么也找不到你实际访问的是那个页面,而且还可以达到封装的效果。让非开发着不能轻易的看到你的页面代码。
    因为这个是可以放在一个类库里面的。
    如下

    也算是加了一层安全机制吧,
    并且方便了大家控制
    我们不管访问的是http://localhost:6166/WebSite1/api/request.aspx?strtext=123
    还是http://localhost:6166/WebSite1/api/test.aspx?strtext=123
    都是在访问一个一般处理程序Test.cs
    而且这个访问的名字大家可以随便配置,我个人感觉还是很方便的。
    有兴趣的朋友可以试试

  • 相关阅读:
    17. Letter Combinations of a Phone Number
    16. 3Sum Closest
    15. 3Sum
    14. Longest Common Prefix
    13. Roman to Integer
    12. Integer to Roman
    11. Container With Most Water
    10. Regular Expression Matching
    9. Palindrome Number
    8. String to Integer (atoi)
  • 原文地址:https://www.cnblogs.com/liuqiyun/p/7656179.html
Copyright © 2011-2022 走看看