[英]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中完成了以下操作:
<modules runAllManagedModulesForAllRequests="true">
用於在搜索查詢中也接受其他字符。 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.