.NET Core发布的应用程序仅显示500错误

时间:2016-12-27 21:12:21

标签: asp.net-core asp.net-core-mvc .net-core

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

您可以看到the full project on GitHub。重要的一点可能是我的project.json文件:

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

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

我的Startup.cs文件的configure方法:

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.

如果我还有其他什么要发布,请告诉我。

2 个答案:

答案 0 :(得分:2)

您在控制台中看不到任何内容,因为您的发布/日志记录配置错误。

您有appsettings.json个文件,但是您没有将其发布(publishOptions中的projects.json)。您发布了不存在的appsettings.productions.json

因此,您的配置中没有任何Logging部分。这[可能]是您在控制台中看不到任何内容的原因。

答案 1 :(得分:-2)

您安装并配置了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;
}

}