日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

在ASP.NET中重写URL 方法三:在IIS7中使用HttpModule 实现无扩展名的URL重写

發布時間:2025/7/14 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在ASP.NET中重写URL 方法三:在IIS7中使用HttpModule 实现无扩展名的URL重写 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上述的HttpModule方法在你要重寫的URL含有.aspx 擴展名或者包含另一個被設置為ASP.NET處理的擴展名的情形下一切都工作。你這么做的話,不需要任何特定的服務器配置,你只要把你的應用拷貝到遠程服務器,它會正常工作的。 但有的時候,你要重寫的URL要么擁有一個不為ASP.NET處理的文件擴展名(譬如, .jpg, .gif, 或 .htm),要么根本沒有擴展名。譬如,我們也許要把這些URL呈示成公開的產品目錄網頁(注意,它們沒有 .aspx 擴展名): http://www.store.com/products/Books
http://www.store.com/products/DVDs
http://www.store.com/products/CDs 在 IIS5 和 IIS6 中,使用ASP.NET處理上面這樣的URL不是很容易。 IIS 5/6 使得在ISAPI擴展(ASP.NET就是這樣一個擴展)里非常難以重寫這些類型的URLS。你需要做的是使用ISAPI過濾器在IIS請求管道(request pipeline)的較早期實現重寫。我將在下面的第四個方法里示范如何在 IIS5/6 實現這樣的重寫。 但好消息是, IIS 7.0使得處理這類情形容易之極。你現在可以在 IIS 請求管道的任何地方執行一個HttpModule,這意味著你可以使用上面的URLRewriter 模塊 來處理和重寫無擴展名的URL(甚至是帶有 .asp,.php,或 .jsp 擴展名的URL)。下面示范了你在IIS7中該如何配置: <?xml version="1.0" encoding="UTF-8"?>

<configuration>

??
<configSections>
????
<section name="rewriter"
????????????? requirePermission
="false"
????????????? type
="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />
?? </
configSections>
??
??
<system.web>
??????
????
<httpModules>
??????
<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" />
???? </
httpModules>
????
??
</system.web>

??
<system.webServer>

????
<modules runAllManagedModulesForAllRequests="true">
??????
<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule" />
???? </
modules>

????
<validation validateIntegratedModeConfiguration="false" />

?? </
system.webServer>

??
<rewriter>
????
<rewrite url="~/products/(.+)" to="~/products.aspx?category=$1" />
?? </
rewriter>
??
</configuration> 注意一下<system.webServer>內<modules>部分設置為true的runAllManagedModulesForAllRequests屬性。這個屬性確保來自Intelligencia的UrlRewriter.Net模塊(是在IIS7正式發布前編寫的),會被調用,有機會重寫到服務器的所有URL請求(包括文件夾)。上面的web.config文件非常酷之處在于: 1) 它在任何IIS7機器上都會工作,你不需要管理員在遠程主機上啟用任何東西,它也能在設置為中等信任安全等級(medium trust)的共享主機的環境場景下工作。 2) 因為我在<httpModules>和 IIS7 的<modules> 部分同時配置了UrlRewriter,我既能在 VS內置的web服務器(即Cassini)中,也能在IIS7下使用同樣的URL重寫規則。兩者完全支持無擴展名的URL重寫。這使得測試和開發非常容易。 IIS 7.0 將在今年的晚些時候作為Windows Longhorn服務器的一部分發布,將在幾個星期內隨Beta3版本的發布支持go-live許可。由于添加到IIS7中的所有的新宿主(hosting)特性,我們預期主機供應商將會非常快地開始積極提供IIS7賬號,這意味著你應該很快就可以開始利用上述的無擴展名的URL重寫支持。我們將在 IIS7 RTM 時段里發布一個為微軟所支持的URL重寫模塊,該模板是免費的,你可以在IIS7上使用,并且這模塊將對你web服務器上的所有內容的高級URL重寫場景提供很好的支持。 樣例下載:我建立的一個使用IIS7和UrlRewriter.Net模塊展示無擴展名URL重寫技術的樣例應用可以在這里下載。

轉載于:https://blog.51cto.com/zhangleiy/381514

總結

以上是生活随笔為你收集整理的在ASP.NET中重写URL 方法三:在IIS7中使用HttpModule 实现无扩展名的URL重写的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。