2016-12-27 693 views
0

我有一个运行在Ubuntu 16.04上的ASP.NET Core应用程序。当我导航到目录并运行dotnet run时,它工作正常。我也可以设置Nginx反向代理,如指定on the .NET Core Docs。但是,当我执行dotnet publish,然后尝试使用发布目录(SlogWeb/bin/Debug/netcoreapp1.0/publish)中的dotnet SlogWeb.dll时,服务器启动时没有错误,但无法显示任何日志记录信息,导航到网站会产生500错误。你可以看到the full project on GitHub。最重要的位是可能是我project.json文件:.NET Core发布的应用程序只显示500错误

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

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

而且我Startup.cs文件的配置方法:

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 
     }); 
    } 

    // ... 

如果我浏览到SlogWeb/bin/Debug/netcoreapp1.0/publish和运行dotnet SlogWeb.dll,我得到的标准启动消息,但然后沉默:

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的网站,看看你是否直接从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

相关问题