QA@IT

ASP.NET MVC5で404エラーが表示される

7203 PV

お世話になっております。
VS2015 C#で作成したASP.NET MVC5のWebアプリをWin2008R2サーバのIIS7.5で動かしますと、初めて動かす時に404エラーが表示されます。
404が表示された状態でリロードすると、本来表示させたいページが表示されます。但し、時間をおいてまた開こうとすると404になります。

別のサーバのSQLServer 2014 Expressのテーブルを検索して結果を表示する単純な処理で、
コントローラーはPWordController一つで下記の内容のロジックです。

namespace WebApplication1.Controllers
{
    public class PWorkController : Controller
    {
        public ActionResult Index()
        {
           // DB参照処理~
           return View("Index");
        }
    }
}

RouteConfig.csは、

namespace WebApplication1
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

Viewは、ViewsのPWork内にIndex.cshtmlがあります。

IISの構成は、サイトの配下にportalというサイト( http://192.168.10.105:8000 )の下に、PWordという名前でアプリケーション配置しております。

原因を探るに辺り、何処をどう調べればいいのか分からず苦戦しております。
どなたかご教示頂ければ幸いです。
何卒、よろしくお願い致します。

回答

詳細なエラー情報(404.n の n・・・以下の記事参照)がログなどを見て取れないでしょうか?

IIS 7.0、IIS 7.5、および IIS 8.0 の HTTP 状態コード
https://support.microsoft.com/ja-jp/kb/943891#!/ja-jp/kb/943891

初めて動かす時に404エラーが表示されます。

「初めて動かす時」というのは、サーバーを立ち上げた直後とかアプリケーションプールがリサイクルされた直後の一番最初の要求の時のことだと理解していますが、その際、要求を受けてワーカープロセスを起動・初期化しログファイルを開くという操作が行われます。

その過程で何か不具合が起こっているのではないか・・・ということが今提供されている情報では自分には想像できる程度で、それ以上のことは分かりません。

問題が Web アプリにあるのか、IIS にあるのか切り分けるため、開発環境でもローカル IIS を使用して違いがあるか調べてみてはいかがでしょう。

対症療法的ですが、ASP.NET 4 / IIS7.5 利用できるアプリケーションのオートスタート機能を使ってみるという手も有効かもしれません。

IIS オート スタート設定による ASP.NET Web アプリケーションの初回実行時のパフォーマンス向上
https://blogs.msdn.microsoft.com/chack/2013/09/25/iis-asp-net-web-2223/

編集 履歴 (1)
ウォッチ

この質問への回答やコメントをメールでお知らせします。