即使纠正了路线以匹配下面的操作,404错误仍然存在。
我想要覆盖的网址中有.
,我认为这会导致问题,因为其他文章网址没有,并且工作正常。我该如何将其编码?
我通常使用/site/contoller/action/param
类型网址完全没问题
对于我的博客网站,我想要一些不同的东西。
以下是我的一篇博客文章的现有链接示例:
/Article/tweaking-asp.net-identity-to-add-first-and-last-name-as-username
我在文章控制器上有一个索引视图,接受一个名为slug
的参数:
public ActionResult Index(string slug)
{
ApplicationDbContext Context = new ApplicationDbContext();
var Article = Context.Articles.FirstOrDefault(x => x.Slug == slug);
// get and list articles and build the ViewModel
return View(Model);
}
我更新了我的RouteConfig.cs
来处理这个问题,但是当我尝试导航到使用此配置的文章时,我似乎弄错了,因为我收到了 HTTP404 错误。
routes.MapRoute(
name: "Articles",
url: "Article/{slug}",
defaults: new { controller = "Article", action = "Index", slug = UrlParameter.Optional }
);
如何正确路由到此类网址?
答案 0 :(得分:1)
基于提供的slug(tweaking-asp.net-identity-to-add-first-and-last-name-as-username),我相信你的问题是由“asp.net”中的句号引起的。基于其他答案,似乎IIS认为您正在请求文件并且它会查找它,因为它找不到它,它返回404.
请尝试使用没有点的slug,如果确实有效,那么可能就是这种情况,这是一个可能的解决方案:Dots in URL causes 404 with ASP.NET mvc and IIS