当我在URL中的SEO文本段以句点结束时,我得到一个404错误



真奇怪!

这是自定义路线:

        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/为保卫圣殿。

版本信息:Microsoft.NET Framework版本:4.0.30319;ASP.NET版本:4.0.30319.225

URL中的任何位置都不能有doy符号?

它可以。虽然开箱即用,但最后没有。

因此,为了允许它在您的web.config<system.web>部分)中添加以下内容:

<httpRuntime relaxedUrlToFileSystemMapping="true" />

哈克在博客上对此发表了评论,汉塞尔曼也发表了评论。如果你是一名.NET开发人员,还没有订阅这两个博客并每天阅读它们,你可能会错过很多有用的东西。

相关内容

最新更新