簡體   English   中英

如何告訴IIS7將流量重定向到asp.net

[英]How to tell IIS7 to redirect traffic to asp.net

當用戶鍵入時,我在global.asax有一個url重寫例程:

http://example.com/products/category/electronics

服務器服務:

http://example.com/products.aspx?category=45

問題是IIS7不發送此請求由asp.net處理,因為請求的路徑在目錄結構中沒有文件夾。

如何在不為每個產品和類別創建目錄的情況下告訴IIS讓asp.net處理此請求?

從技術上講,你沒有IIS這樣做,你使用URL重寫來做到這一點。 這是ASP.NET MVC的常規功能。 但是,它也可以在“經典”基於表單的asp.net中使用。

這里有一篇關於它的文章: http//msdn.microsoft.com/en-us/library/ms972974.aspx

本文列出了許多實現此目的的方法,以及編寫httpModule的詳細說明。

事實上,這篇文章展示了如何完全按照你的要求行事。 在頁面上搜索“當用戶訪問/Products/Beverages.aspx時”頁面上的內容,它將直接向您展示其工作原理。 (文章中的說明更高。)

簡而言之,不要在Global.asax執行此操作。 改為使用IIS7 Url Rewriter:

使用URL重寫模塊

你有兩個解決方案之一 -

  1. 使用URL重寫映射並將每個類別名稱映射到類別ID:

     <rewrite> <rewriteMaps> <rewriteMap name="StaticRewrites"> <add key="/products/category/electronics" value="/products.aspx?category=45" /> <add key="/products/category/books" value="/products.aspx?category=46" /> <add key="/products/category/dvds" value="/products.aspx?category=47" /> </rewriteMap> </rewriteMaps> <rules> <rule name="Rewrite Rule 1 for StaticRewrites" stopProcessing="true"> <match url=".*" /> <conditions> <add input="{StaticRewrites:{REQUEST_URI}}" pattern="(.+)" /> </conditions> <action type="Rewrite" url="{C:1}" appendQueryString="False"/> </rule> </rules> </rewrite> 
  2. 使用更“動態”的重寫:

     <rewrite> <rules> <rule name="RedirectUserFriendlyURL1" stopProcessing="true"> <match url="^products\\.aspx$" /> <conditions> <add input="{REQUEST_METHOD}" pattern="^POST$" negate="true" /> <add input="{QUERY_STRING}" pattern="^([^=&amp;]+)=([^=&amp;]+)$" /> </conditions> <action type="Redirect" url="products/{C:1}/{C:2}" appendQueryString="false" /> </rule> <rule name="RewriteUserFriendlyURL1" stopProcessing="true"> <match url="^products/([^/]+)/([^/]+)/?$" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="products.aspx?{R:1}={R:2}" /> </rule> </rules> </rewrite> 

    在上述情況下,您需要更改products.aspx頁面以接受類別名稱,然后在該頁面中查找數據庫中類別的實際整數ID。

將重寫責任傳遞給IIS7的URL重寫模塊(或任何其他重寫器,如Iconics IIRF或HeliconTech的ISAPI重寫)意味着您可以單獨更改這些規則,而不是將它們刻錄到您的代碼中。 將這些規則刻錄到代碼中意味着每次進行更改時都必須重新部署。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM