2015-11-19 91 views
0

我在MVC 5開發了一個網站,在清單中執行搜索和網址是這樣我們如何在ASP.NET MVC網址中允許點?

http://localhost:56099/search/SQUARE 

該網址的作品,它重定向到搜索控制器,並與搜索查詢作爲SQUARE索引操作,並給出正確的結果。但是,如果我輸入2個點作爲搜索查詢,它會將我帶到我的根頁面。該網址會是這樣

http://localhost:56099/search/.. 

這是奇怪,因爲通過單點或多點時,同樣的事情的作品,所以我找不到任何技術原因,它是越來越被忽視。接受其他字符也搜索查詢

  1. <modules runAllManagedModulesForAllRequests="true">

    我在Web.Config中做以下的事情。

  2. relaxedUrlToFileSystemMapping="true"

但沒有成功,我無法找到這種怪異的行爲的任何真正的原因。任何建議。

回答

0

你應該在你的「RouteConfig.cs」文件中註冊搜索路徑

routes.MapRoute(
       "SearchRoute", 
       "Search/{*pathinfo}", 
       new { controller = "Search", action = "ActionName"}); 
+0

我加入 - 'routes.MapRoute( 名稱: 「搜索」, 網址: 「搜索/ {濾}/{您做生意}」, 默認值:新{控制器=「搜索」,動作=「指數」,過濾= UrlParameter.Optional,pageNo = UrlParameter.Optional});' – Arjuna

0

您有..的問題,因爲你的情況..被檢測爲相對URL,這表明向上移動到父目錄(或者你的案例中的root),基本上剝離了一切,直到Base URI中的前一個斜線。

UrlRoutingHandler在web.config應該可以幫到你。

<system.webServer>  
    <handlers>  
    <add name="UrlRoutingHandler" 
     type="System.Web.Routing.UrlRoutingHandler, 
       System.Web, Version=4.0.0.0, 
       Culture=neutral, 
       PublicKeyToken=b03f5f7f11d50a3a" 
     path="/Search/*" 
     verb="GET"/>  
    </handlers> 
</system.webServer> 

然後,以/Search開頭的每個網址都將被視爲MVC網址。

你也可以嘗試:

<system.webServer> 
    <security> 
      <requestFiltering allowDoubleEscaping="true" /> 
    </security> 
</system.webServer> 
+0

我試過但沒有改變,仍然無法正常工作 – Arjuna