2017-02-02 99 views
4

私はHTPPエラー500に遭遇していますが、その理由はわかりません。サービスを開始すると、Chromeブラウザが開き、http://localhost:5000に移動し、エラーがポップアップします。クロームデベロッパーツールのウィンドウは、この単一のエラーを示しています。ここHTTPエラー500:localhostは現在このリクエストを処理できません

Failed to load resource: the server responded with a status of 500 (Internal Server Error) http://localhost:5000/ 

は私Startup.csファイル(簡単にするためのステートメントを使用してexluding)です:MVCで

namespace Tuner 
{ 
    public class Startup 
    { 
     public static void Main(string[] args) 
     { 
      var exePath = Process.GetCurrentProcess().MainModule.FileName; 
      var directoryPath = Path.GetDirectoryName(exePath); 

           var host = new WebHostBuilder() 
       .CaptureStartupErrors(true) 
       .UseKestrel() 
       .UseUrls("http://localhost:5000") 
       .UseContentRoot(Directory.GetCurrentDirectory()) 
       .UseIISIntegration() 
       .UseStartup<Startup>() 
       .Build(); 
      host.Run(); 
     } 


     public Startup(IHostingEnvironment env) 
     { 
      //Setup Logger 
      Log.Logger = new LoggerConfiguration() 
       .WriteTo.Trace() 
       .MinimumLevel.Debug() 
       .CreateLogger(); 
      // Set up configuration sources. 
      var builder = new ConfigurationBuilder() 
       .SetBasePath(env.ContentRootPath) 
       .AddJsonFile("appsettings.json"); 
      //.AddEnvironmentVariables(); 
      Configuration = builder.Build(); 
     } 

     public IConfigurationRoot Configuration { get; set; } 

     // This method gets called by the runtime. Use this method to add services to the container. 
     public void ConfigureServices(IServiceCollection services) 
     { 
      services.AddSwaggerGen(); 

      services.AddMvc().AddJsonOptions(options => 
      { 
       options.SerializerSettings.ContractResolver = 
        new CamelCasePropertyNamesContractResolver(); 
      }); 
     } 

     // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 
     public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime lifetime) 
     { 

      if (env.IsDevelopment()) 
      { 
       app.UseDeveloperExceptionPage(); 
      } 
      else 
      { 
       app.UseExceptionHandler("/Home/Error"); 
      } 

      app.UseStaticFiles(); 

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


      lifetime.ApplicationStopping.Register(() => 
      { 
       Log.Debug("Application Stopping. Do stuff."); 
      }); 
     } 
    } 
} 

、これは取得するにHomeController Indexメソッドを引き起こし呼ばれる:

namespace Tuner.Controllers 
{ 
    public class HomeController : Controller 
    { 
     public string appVersion = typeof(HomeController).Assembly.GetName().Version.ToString(); 
     public string appName = "Empty Web App"; 

     [HttpGet("/")] 
     public IActionResult Index() 
     { 
      var url = Request.Path.Value; 
      if (url.EndsWith(".ico") || url.EndsWith(".map")) 
      { 
       return new StatusCodeResult(404); 
      } 
      else 
      { 
       // else block is reached 
       return View("~/Views/Home/Index.cshtml"); 
      } 
     } 

     public IActionResult Error() 
     { 
      return View("~/Views/Shared/Error.cshtml"); 
     } 

     [HttpGetAttribute("app/version")] 
     public string Version() 
     { 
      return appVersion; 

     } 

     [HttpGetAttribute("app/name")] 
     public string ProjectName() 
     { 
      return appName; 
     } 
    } 
} 

、ここでは、(ビュー/ホームに配置されている)私のIndex.cshtmlファイルです:

@{ 
    ViewBag.Title = "Tuner"; 
} 

@section pageHead { 
} 

@section scripts { 
    <script src="~/vendor.bundle.js"></script> 
    <script src="~/main.bundle.js"></script> 

} 

<cache vary-by="@Context.Request.Path"> 
    <app>Loading content...</app> 
</cache> 
+0

500エラーは何ですか? eventvwrのどこかにエラーが記録されていますか? – Peru

+0

ほとんどの場合、ASP.Netフレームワークによってキャッチされたどこかのコードに例外がスローされ、ブラウザにHTTPコード500(内部サーバーエラー)応答が返されます。アプリケーションをデバッグし、例外がスローされている場所を確認し、詳細をお知らせください。 – JTech

+0

ウェブブラウザとChromeデベロッパーツールコンソールに500のエラーが表示されます。 – Roka545

答えて

4

設定では、UseUISIntegrationはUseUrlsと干渉します。UseUrls設定はIISExpress/IISではなくKestrelプロセス用です。

IISポートを変更する場合は、Properties/launchSettings.jsonを参照してください。IISが使用しているapplicationUrlを設定できます。

あなたはテスト目的のためにUseIISIntegrationを削除することができ、その後、あなたは、ポート5000に接続できますが、あなた決しては、サーバーが直面しているインターネットのようケストレルを使用する必要があり、それは常になど、IISまたはnginxのようなリバースプロキシの背後に実行する必要があります

詳細については、the Hosting Docs Pageを参照してください。私はIISを使用していた

2

は(OPは、IISを使用しようとしていた場合、私は不明だ)が、私はinstructions like this oneで説明したように、バンドルホスティング.NETコアWindows Serverをインストールしていないでした。そのモジュールをインストールした後、私のアプリが提供されました(つまり、500エラーなし)

4

私のように、あなたはASP.NETをインストールする必要があります! Windows Server 2012 R2上で

これはを介して行うことができますは、Windowsの機能の有効化または機能をオフにする:

  1. あなたはを開始する前に、インストールタイプ、およびサーバーの選択のステップをを完了ウィザードの
  2. サーバーロールの場合、Webサーバー(IIS)ノードを見つけて展開します。
  3. Webサーバーノードを展開します。
  4. アプリケーション開発ノードを展開します。
  5. ASP.NET 3.5またはASP.NET 4.5ノードを適宜チェックしてください。
  6. ロールと機能の追加ウィザードの完了
関連する問題