2010-10-28 58 views
0

我在ASP.NET Web應用程序中出現了故意連續反斜槓被從請求URL中刪除的問題。asp.net連續從url中刪除反斜槓

我會要求是這樣的: 本地主機/頁/ A // C

但是,當請求到達的頁面,原始網址是: 本地主機/頁/ A/C

不知道這是罪魁禍首,但我有一個適當的網址Rewite正則表達式,這裏的規則:

<system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="Games QueryString"> 
        <match url="^(Page|OtherPage).aspx(?:/([\w-_()]+)(?:/([\w-_() ]*)(?:/([\w-_()]+))?)?)?$" /> 
        <action type="Rewrite" url="{R:1}.aspx?1={R:2}&amp;2={R:3}&amp;3={R:4}" appendQueryString="false" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 

所以,重寫後,查詢字符串是走出來的Page.aspx 1 = A & 2 = C & 3 = 當它應該是Page.aspx?1 = A & 2 = & 3 = C

請幫助!

+0

爲什麼你需要在網址中連續的斜線? – pavanred 2010-10-28 02:46:16

+0

頁面之後的每個組都是三部分查詢字符串的單獨部分;頁/ 1/2/3。如果用戶選擇了第1部分和第3部分,則2應該返回空,因此Page.aspx/a // c – JoshKraker 2010-10-29 00:38:03

回答

0

你也許可以改變你的正則表達式是這樣的:

^(Page|OtherPage).aspx(?:/+([\w-_()]+)(?:/+([\w-_() ]*)(?:/+([\w-_()]+))?)?)?$ 

我添加了一個「+」你的比賽後,「/」,從接受一個「/」來接受一個改變他們或者更多。

此外,我不能爲我的生活工作,爲什麼你想在那裏有額外的斜槓。可能是一個糟糕的主意。由於任何原因重新考慮這樣做。

+0

這會產生與現在相同的結果。它的奇怪,我的正則表達式應該工作,如果你在正則表達式測試中運行它,你會發現Page.aspx/a // c將匹配到{R:1} ='Page',{R:2} = 'a',{R:3} =''和{R:4} =''c。一旦重寫,它應該產生Page.aspx?1 = A&2 =&3 = C – JoshKraker 2010-10-29 00:38:47