2

ルートにドットが含まれている場合、ルートへのアクセスに問題があります。再現するために、デフォルトの MVC4 WebApi アプリケーションを作成します。デフォルトルートをたどる...

routes.MapRoute(
   name: "Default",
   url: "{controller}/{action}/{id}",
   defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

次のようにコントローラーを記述します...

public class HomeController : Controller
{
   public ActionResult Index(string id)
   {
      if (id == null)
      {
         return View();
      }
      else
      {
         return PartialView(id);
      }
   }
}

既存の「index.cshtml」の隣に、「test.cshtml」と「test.menu.cshtml」の 2 つのファイルを作成します。

/home/index/test を開くと、期待どおりに動作します。「test.cshtml」の内容を戻します。

ただし、/home/index/test.menu を開くと 404 エラーが返されます。

なぜこれが起こるのですか?どうすれば回避できますか?

4

1 に答える 1

3

表示されている 404 エラーは IIS からのものです。MVC ルーティング用のモジュールが制御されることはありません。

modulesのセクションのセクションに<system.webServer>次のオプションを追加するweb.configと、MVC ルーティングが試行され、問題が解決されるようになります。

runAllManagedModulesForAllRequests="true"

私の web.config には既存のセクションがなかったので、次の行をセクションmodulesに追加しました。<system.webServer>

<modules runAllManagedModulesForAllRequests="true" />

そして今、それは私のために働きます。

于 2013-04-06T00:21:42.103 に答える