0

かなり奇妙!

カスタムルートは次のとおりです。

        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記号を含めることはできませんか?

'/'アプリケーションのサーバーエラー。リソースが見つかりません。説明:HTTP404。探しているリソース(またはその依存関係の1つ)が削除されたか、名前が変更されたか、一時的に使用できなくなった可能性があります。次のURLを確認し、スペルが正しいことを確認してください。

要求されたURL:/ dota2-news / 1/In-defense-of-the-Temple。

バージョン情報:Microsoft .NET Frameworkバージョン:4.0.30319; ASP.NETバージョン:4.0.30319.225

4

1 に答える 1

2

URLのどこにもdoy記号を含めることはできませんか?

できる。すぐに使用できますが、最後ではありません。

web.configしたがって、それを許可するには、 (<system.web>セクション)に以下を追加します。

<httpRuntime relaxedUrlToFileSystemMapping="true" />

Haackedはそれについてブログに書いています。ハンゼルマンも。あなたが.NET開発者であり、これら2つのブログをまだ購読しておらず、毎日読んでいない場合は、おそらく多くの便利なものを見逃すことになります。

于 2012-07-15T19:16:45.060 に答える