我有一个在MVC 5中开发的网站,在库存中执行搜索,网址就像这样
http://localhost:56099/search/SQUARE
此网址有效,它会重定向到搜索控制器和索引操作,搜索查询为SQUARE并提供正确的结果。但是,如果我输入2个点作为搜索查询,它只需要我到我的根页面。网址将是这样的
http://localhost:56099/search/..
这是奇怪的,因为当传递单点或多点时同样的事情是有效的,所以我找不到任何被忽略的技术原因。
我在Web.Config中做了以下事情:
<modules runAllManagedModulesForAllRequests="true">
也用于在搜索查询中接受其他字符。relaxedUrlToFileSystemMapping="true"
但没有成功,我无法找到这种奇怪行为的真正原因。任何建议。
答案 0 :(得分:0)
您应该在“RouteConfig.cs”文件中注册搜索路径
routes.MapRoute(
"SearchRoute",
"Search/{*pathinfo}",
new { controller = "Search", action = "ActionName"});
答案 1 :(得分:0)
您遇到..
的问题,因为您的案例中的..
被检测为相对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
开头的每个网址都将被视为MVC网址。
你也可以尝试:
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true" />
</security>
</system.webServer>