2016-07-22 21 views
5

IIS 10で実行されているASP.NETコアWebアプリケーションに問題があります。 AngularJSでシングルページアプリケーションを開発しています。IIS 10でのASP.NETコア404エラー

index.htmlは完全にロードされますが、バックエンドの要求はIIS 10で404エラーコードで失敗しています。IIS ExpressのVisual Studioからは、完全に機能します。

どのようにバックエンドリクエストを修正できますか?ここで

は私のProgram.cs

public static void Main(string[] args) 
{ 
    var host = new WebHostBuilder() 
     .UseKestrel() 
     .UseContentRoot(Directory.GetCurrentDirectory()) 
     .UseIISIntegration() 
     .UseStartup<Startup>() 
     .Build(); 

    host.Run(); 
} 

だとここに私の設定方法は、あなたのコードは、ケストレルと私のマシンに取り組んでいるStartup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    app.UseDefaultFiles(); 

    app.UseStaticFiles(); 

    app.UseIdentity(); 

    // Custom middleware for Angular UI-Router 
    app.Use(async (context, next) => 
    { 
     if (!Path.HasExtension(context.Request.Path.Value) 
     && context.Request.HttpContext.Request.Headers["X-Requested-With"] != "XMLHttpRequest" 
     && context.Request.Method.ToUpper() != "POST" 
     && context.Request.Method.ToUpper() != "PUT" 
     && context.Request.Method.ToUpper() != "DELETE") 
     { 
      await context.Response.WriteAsync(File.ReadAllText(env.WebRootPath + "/index.html")); 
     } 

     await next(); 
    }); 

    app.UseMvc(routes => 
    { 
     routes.MapRoute(
      name: "default", 
      template: "api/{controller=Home}/{action=Index}/{id?}"); 
    }); 
} 
+0

500エラーを投げていたということでしたASP.NET Coreロギングを有効にします(おそらくデバッグログレベルで)。なぜ失敗したのかに関するメッセージがあるかどうか確認してください。 –

+0

web.configも投稿してください。 –

+0

MVCサービスを設定しましたか? –

答えて

3

からです。良いトラブルシューティングの手順は、問題がASP.NET CoreアプリケーションであるかIISホスティング構成で発生しているかを調べることです。

これはプロジェクトのルートから試してください。お使いのブラウザで

Hosting environment: Production 
Content root path: C:\MyApplicationPath 
Now listening on: http://localhost:5000 
Application started. Press Ctrl+C to shut down. 

は、以下の2つのURLにアクセスしてください:

dotnet restore 
dotnet run 

あなたはこのようなものが表示されます。彼らがうまくいかない場合は、アプリケーションに何か問題があります。彼らがうまくいけば、何かあなたのIISホスティングに間違っています。

localhost:5000  // you will see your index.html page 
localhost:5000/api // you will see your default routes output 
+1

ありがとう、私はそれを修正することができます。問題は私のアプリケーションにありましたが、アプリケーションに何か問題があった場合、404エラーを投げるのはちょっと変です。 –

+1

アプリケーションに何が問題だったのですか?あなたの修正は何を含んでいましたか? –

+1

問題は設定ファイルがありませんでした。私は必要な接続文字列で開発、ステージング、プロダクション用の3つの環境appsettingsファイルを持っています。デフォルトの公開オプションには、appsettings.jsonのみが含まれています。ですから、すべての環境設定をコピーするには、値をappsettings * .jsonに変更する必要があります。 –

6

私の場合の問題は私のコントローラは例外をスローしたこのようなフレームワークが全く利用できなかった例外ハンドラページ、従って404エラーを使用しようと、コントローラ自体が

関連する問題