Asp.Net MVC 路由操作方法在 url 末尾有 DOT (.) 时不会调用



配置的路由:

routes.MapRoute(
  name: "RedirectToProduct",
  url: "product/page/p{productId}/{shortName}",
  defaults: new { controller = "Product", action = "RedirectToProduct", shortName = UrlParameter.Optional }
);

操作方法:

public class ProductController : Controller
{
    public async Task<ActionResult> RedirectToProduct(string productId, string shortName)
    {
    }
}

问题

  • 当我点击url时http://localhost:1234/product/page/p1185/,那么我就是在控制器的操作方法中获取调用
  • 但是当我点击url时http://localhost:1234/product/page/p118.5,我是在控制器的操作方法中未得到调用。我看到HTTP错误404.0-未找到(请参阅productId中有DOT(.)。)

我想要的是-无论我是否在productUd参数的末尾添加DOT(.),调用都应该进入控制器的操作方法。

提前感谢!

如果点是问题所在,如product/page/p118.5,则将runAllManagedModulesForAllRequests = true添加到web.config中,如:

<system.webServer>
   <modules runAllManagedModulesForAllRequests="true">
     ...
   </modules>
 </system.webServer>

最新更新