2016-12-27 9 views
0

私はUbuntu 16.04で動作するASP.NET Coreアプリケーションを持っています。ディレクトリに移動してdotnet runを実行すると正常に動作します。私はまた指定されたon the .NET Core DocsのようにNginxリバースプロキシを設定することができます。しかし、dotnet publishを実行して公開ディレクトリ(SlogWeb/bin/Debug/netcoreapp1.0/publish)からdotnet SlogWeb.dllを使用すると、サーバーはエラーなしで起動しますが、ログ情報が表示されず、Webサイトに移動すると500のエラーが発生します。.NET Core公開アプリでは500エラーしか表示されません

the full project on GitHubが表示されます。私はSlogWeb/bin/Debug/netcoreapp1.0/publishに移動しdotnet SlogWeb.dllを実行した場合、私は標準のスタートアップを得る

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, DbSeeder dbSeeder) { 
    loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
    loggerFactory.AddDebug(); 

    if (env.IsDevelopment()) { 
     app.UseDeveloperExceptionPage(); 
     app.UseDatabaseErrorPage(); 
    } 

    if (env.IsProduction()) { 
     app.UseForwardedHeaders(new ForwardedHeadersOptions { 
      ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto 
     }); 
    } 

    // ... 

// dependencies and tools 
"publishOptions": { 
    "include": [ 
     "wwwroot", 
     "web.config", 
     "appsettings.Production.json" 
    ] 
}, 

"scripts": { 
    "prepublish": [ "npm install", "gulp build" ] 
} 

そして、私のStartup.csファイルのconfigureメソッド:重要なビットは、おそらく私のproject.jsonファイルですメッセージが表示された後、無音:

Hosting environment: Production 
Content root path: /home/shaun/sites/Slog/src/SlogWeb/bin/Debug/netcoreapp1.0/publish 
Now listening on: http://localhost:5000 
Application started. Press Ctrl+C to shut down. 

投稿する必要がある場合はお知らせください。

+0

NginxまたはKestrelからエラー500が表示されますか? Nginxを使用せずにWebサイトを実行し、Kestrelから直接結果を受け取ったかどうかを確認してください。 Kestrelがログに何のメッセージも表示せずに500エラーを返すならば、それは非常に奇妙です(ロギングを無効にしない限り、ロギング設定の 'Startup'を確認してください)。 – Dmitry

+0

@Dmitry公開された '.dll'を実行しようとすると、私が使っているロギングメソッドとKestrelから見たものを追加しました。 – Shaun

+0

'http:// localhost:5000'(Kestrelのみ)または' http:// localhost:80'(Nginx + Kestrel)からエラー500を受け取りますか? – Dmitry

答えて

2

パブリッシュ/ログの設定が間違っているので、あなたはコンソールで何も見えません。

ファイルがappsettings.jsonですが、公開することはありません(publishOptionsprojects.json)。存在しないappsettings.productions.jsonを公開します。

結果として、設定にはLoggingセクションがありません。これはコンソールに何も見えない理由です。

+0

これは、@ iikkooのコメントの公開に関するコメントに加えて、私の問題を解決しました。 'appsettings.Production.json'ファイルはリポジトリから自動的に除外されています。なぜなら、開発にユーザーの秘密を使用する秘密の設定が含まれているからです。 'appsettings.json'を' publishOptions:include'配列に追加すると、ロギングが正しく機能し、問題がViewsを見失っているのを見ることができました。 – Shaun

-1

nginxをインストールして設定しましたか? https://www.nginx.com/resources/wiki/start/topics/tutorials/install/

例confに:

server { 
listen 80 default_server; 
location/{ 
    proxy_pass http://localhost:5000; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection keep-alive; 
    proxy_set_header Host $host; 
    proxy_cache_bypass $http_upgrade; 
} 

}

+0

ここではnginxの設定はまったく関係ありません。 – Nozim

関連する問題