ASP.NET CORE:生产中的数据库连接问题(SQLite)

时间:2017-07-27 22:46:16

标签: c# asp.net asp.net-mvc database sqlite

操作系统:Linux,CentOS 代理:Apache Asp.NET Core 1.1

问题:当我决定将其部署在真实服务器上时,我的应用已经到了某个时刻。

所以一切正常,在我的本地机器上完美运行。我没有问题。

但是当我发布并上传到服务器时,它不能按照我的预期运行。我的意思是数据库(SQLite)。 应用程序从数据库读取数据,因为它应该,但只要在我的代码中等待_db.SaveChangesAsync(),应用程序就会崩溃。

我在互联网上搜索过,并没有任何可以帮助我的事情。

到目前为止,我有3种不同的例外:

  1. SQLite错误8:'尝试编写只读数据库'。

  2. 我将db文件的权限更改为777及其自身的文件夹,但没有帮助。

  3. 得到了这个: SQLite错误14:'无法打开数据库文件'。

    1. 当我尝试将其添加到Configure:

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

    2. 获得此豁免: 警告:Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersMiddleware [1]       X-Forwarded-For和X-Forwarded-Proto之间的参数计数不匹配。

      连接字符串是:

      “DefaultConnection”:“Data Source = GlobalEvent.db”

1 个答案:

答案 0 :(得分:0)

问题在于错误的反向代理设置。我找不到适合Apache的解决方案,所以我把它改成了Nginx。说实话,我其实更喜欢它。现在一切正常。此外,我为子域创建了Nginx服务器块。上面的所有其他内容仍然适用。

这是我的ASP.NET核心应用程序的conf文件:

server {
    listen 80;
    root /var/www/subdomain.domain.com/html;
    server_name subdomain.domain.com www.subdomain.domain.com;  
    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;
        }
}