2015-11-19 41 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