很奇怪!
这是自定义路线:
routes.MapRoute(
"Dota2-News-Details", // Route name
"dota2-news/{id}/{slug}", // URL with parameters
new { controller = "Dota2News", action = "Detail", slug = "", id = UrlParameter.Optional } // Parameter defaults
);
工作链接:
http://localhost:20099/dota2-news/3/Some-random-post
http://localhost:20099/dota2-news/5/Another-random-post
http://localhost:20099/dota2-news/14/New-delicious-items
非工作链接:
http://localhost:20099/dota2-news/4/The-Dark-Moon-comes.
http://localhost:20099/dota2-news/11/Bwa-ha-welcome.
一时兴起,我进入数据库并修改了 SEOTextSlug 以.
从值中删除最终符号。正如预期的那样,它现在可以正常工作。不过我很困惑,我认为 URL 可以以.
符号结尾。
这是我的控制器:
public ActionResult Detail(int id, string slug)
{
var viewModel = new OfficialNewsModel();
var news = _officialNewsRepository.FindById(id);
if (news.SEOTextSlug != slug)
{
return RedirectToAction("Detail", "Dota2News", new { id = news.OfficialNewsId, slug = news.SEOTextSlug });
}
viewModel = Mapper.Map<OfficialNew, OfficialNewsModel>(news);
return View(viewModel);
}
我的问题:
为什么尾随.
符号会破坏应用程序?URL 中的任何地方都不能有 doy 符号?
“/”应用程序中的服务器错误。无法找到该资源。说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。
请求的 URL:/dota2-news/1/In-defense-of-the-Temple。
版本信息:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.0.30319.225