簡體   English   中英

我們如何在ASP.NET MVC URL中允許點?

[英]How can we allow dots in ASP.NET MVC urls?

我有一個用MVC 5開發的網站,可以在庫存中執行搜索,而網址是這樣的

http://localhost:56099/search/SQUARE

此網址有效,它重定向到搜索控制器為SQUARE的“搜索控制器”和“索引”操作,並給出正確的結果。 但是,如果我輸入2個點作為搜索查詢,它只會帶我到我的根頁面。 網址將是這樣

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

奇怪的是,當傳遞單個點或多個點時,相同的東西也起作用,因此我找不到忽略它的任何技術原因。

我在Web.Config中完成了以下操作:

  1. <modules runAllManagedModulesForAllRequests="true">用於在搜索查詢中也接受其他字符。
  2. relaxedUrlToFileSystemMapping="true"

但是沒有成功,我找不到這種奇怪行為的任何真正原因。 任何建議。

您應該在“ RouteConfig.cs”文件中注冊搜索路線

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

您遇到了..的問題,因為在您的情況下, ..被檢測為相對URL,這表示將向上移動到父目錄(或您的情況下的根目錄),從本質上說,所有內容都剝離了基本URI中的前一個斜杠。

web.config UrlRoutingHandler應該可以為您提供幫助。

<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開頭的每個URL都將被視為MVC URL。

您也可以嘗試:

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

暫無
暫無

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

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