国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

支持正則表達式的UrlMapping(ASP.NET2.0)

2019-11-18 17:02:42
字體:
來源:轉載
供稿:網友

猛然發現asp.net 2.0本身就提供了對UrlMapping的天然支持--web.config文件中的<urlMappings>節,感嘆現在寫程序真的不是什么技術活了。


<?xml version="1.0"?>
<configuration>
    <system.web>
        <urlMappings>
            <add url="~/2006/07" mappedUrl="~/Month.aspx?year=2006&amp;month=01"/>
            <add url="~/2006/08" mappedUrl="~/Month.aspx?year=2006&amp;month=02"/>

        </urlMappings>
        <compilation debug="true"/>
  </system.web>
</configuration>
這個配置可以使ASP.NET程序在ASP.NET Development Server(就是建ASP.NET項目時選文件系統)直接支持UrlMapping,不過它有幾個不足之處:
1、只能映射固定的地址,所以只能一個地址一個地址的配置
2、ASP.NET Development Server中可以不用配什么別的地方,在IIS中受請求響應模型所限,估計還是要在IIS中設映射。這樣的話,反而搞得我到處找資料,看怎么實現在ASP.NET Development Server設置映射,得到的結果是不行。

針對于UrlMapping的不支持正則表達式的缺陷,我做了個支持正則表達式的UrlMapping,可惜由于UrlMapping是由Httpapplication調用的,而HttpApplication是Internal的,不能對它做什么動作,所以實現的東東和UrlMapping相比做在Web.config中多做個<Section>

文件下載
(下載文件中包括RegexUrlMapping組件和一個示例ASP.NET,注意ASP.NET程序需部署在IIS中,并且要設置映射,方法是右擊虛擬目錄,選屬性,選配置,在通配符應用程序映射中添加c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll的引用,并去掉確認文件是否存在的鉤,這里是為了偷懶才用通配符全部映射到ASP.NET2.0的ISAPI,實際開發中最好酌情添加具體一點的映射)

Web.config中的配置舉例如下:


<?xml version="1.0"?>
<configuration>
    <configSections>
        <section name="RegexUrlMappings" type="Cnblogs.DTC.THIN.RegexUrlMapping.RegexUrlMappingsSection,Cnblogs.DTC.THIN.RegexUrlMapping"/>
    </configSections>
    <RegexUrlMappings enabled="true" rebaseClientPath="true">
        <add url="(/d+)$" mappedUrl="default.aspx?id=$1"/>
        <add url="(?&lt;=/)(?&lt;id&gt;[a-z]+)$" mappedUrl="default.aspx?id=${id}" />
        <add url="/$" mappedUrl="/default.aspx?id=0"/>
    </RegexUrlMappings>
    <system.web>
        <httpModules>
            <add name="RegexUrlMappingModule" type="Cnblogs.DTC.THIN.RegexUrlMapping.RegexUrlMappingModule,Cnblogs.DTC.THIN.RegexUrlMapping"/>
        </httpModules>
        <compilation debug="true"/>
        <authentication mode="Windows"/>
    </system.web>
</configuration>

其中RegexUrlMapping的屬性enabled用于打開和關閉映射,rebaseClientPath參見HttpContext.RewritePath中rebaseClientPath參數
<add>用于添加映射規則,url為匹配路徑的正則表達式pattern,mappedUrl是替換規則,用法參見Regex.Replace方法
上例中,第一個add在url中用括號定義了組1,所以在后面引用$1
第二個add在url中用(?<id>)定義了組id,后面用${id}引用了這個組
第三個是固定字符串替換
呵呵,看來正則表達式還是很重要滴~~

http://m.survivalescaperooms.com/thinhunan/archive/2006/08/22/regexurlmapping.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇仁县| 霍州市| 调兵山市| 弥勒县| 松桃| 余江县| 武功县| 岢岚县| 永城市| 湖州市| 灵石县| 磐安县| 濮阳县| 昌宁县| 永新县| 缙云县| 博白县| 浙江省| 雅江县| 喀什市| 绥化市| 建阳市| 晋江市| 许昌县| 玉环县| 霸州市| 岐山县| 西吉县| 嘉黎县| 雅江县| 辽源市| 抚顺市| 新疆| 漯河市| 靖安县| 阿拉尔市| 福鼎市| 固原市| 宽城| 阿鲁科尔沁旗| 平果县|