Asp.Net 当 url 末尾有一个点 (.) 时,MVC 路由操作方法不会调用
Asp.Net MVC route action method doesn't call when there is a DOT (.) at the end of url
配置的路线:
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 中有点 (.)。)
我想要的是-无论我在最后添加点 (.) 还是不在 productUd 参数中,调用都应该在控制器的操作方法中进行。
提前致谢!
如果点是问题所在,例如 product/page/p118.5
,则将 runAllManagedModulesForAllRequests = true
添加到您的 web.config,例如:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
...
</modules>
</system.webServer>
配置的路线:
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 中有点 (.)。)
我想要的是-无论我在最后添加点 (.) 还是不在 productUd 参数中,调用都应该在控制器的操作方法中进行。
提前致谢!
如果点是问题所在,例如 product/page/p118.5
,则将 runAllManagedModulesForAllRequests = true
添加到您的 web.config,例如:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
...
</modules>
</system.webServer>