很奇怪!
以下是自定义路线:
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.您正在寻找的资源(或其中一个 依赖项)可能已被删除,其名称已更改,或者是 暂时不可用。请查看以下网址并制作 确保它拼写正确。请求的网址:/ dota2-news / 1 / In-defense-of-the-Temple。
版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.225
答案 0 :(得分:2)
网址中的任何地方都没有doy符号吗?
它可以。虽然没有开箱即用,但不是最终的。
因此,允许它将以下内容添加到您的web.config
(<system.web>
部分):
<httpRuntime relaxedUrlToFileSystemMapping="true" />
Haacked blogged关于它。 Hanselman also。如果您是.NET开发人员并且尚未订阅这两个博客并每天阅读它们,您可能会错过许多有用的东西。