首页 文章

我们如何在 ASP.NET MVC 网址中允许点?

提问于
浏览
0

我有一个在 MVC 5 中开发的网站,它在库存中执行搜索,网址就是这样

http://localhost:56099/search/SQUARE

此 URL 工作,它重定向到搜索控制器和索引操作与搜索查询为 SQUARE 并给出正确的结果。但是,如果我输入 2 个点作为搜索查询,它只需要我到我的根页面。网址将是这样

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

这很奇怪,因为当传递单点或多点时同样的事情是有效的,所以我找不到任何技术上的原因,为什么它被忽略了。

我在 Web.Config 中做了以下事情:

  • <modules runAllManagedModulesForAllRequests="true">也用于在搜索查询中接受其他字符。

  • relaxedUrlToFileSystemMapping="true"

但没有成功,我找不到任何真正的理由这种奇怪的行为。任何建议。

2 回答

  • 0

    您应该在“RouteConfig.cs”文件中注册搜索路线

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

    您遇到..的问题,因为在您的情况下..被检测为相对 URL,这表示在您的情况下向上移动到父 directory(or 根),基本上剥离了基本 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>
    

相关问题