我有一个干净的.NET Core 2.0 webapp并使用nginx在Ubuntu 16.04服务器上运行。
我的appsettings.json
包含:
"ConnectionStrings": {
"Database": "Server=myip;Database=mydb;Uid=myuser;Pwd=mypassword",
"providerName": "Sql.Data.SqlClient"
},
我已在单独的服务器上安装了SQL Server,它正常运行:
user@server:~$ sudo systemctl status mssql-server.service
● mssql-server.service - Microsoft SQL Server Database Engine
Loaded: loaded (/lib/systemd/system/mssql-server.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2018-04-18 19:05:37 CEST; 20min ago
Docs: https://docs.microsoft.com/en-us/sql/linux
Main PID: 1016 (sqlservr)
CGroup: /system.slice/mssql-server.service
├─1016 /opt/mssql/bin/sqlservr
└─1197 /opt/mssql/bin/sqlservr
我成功地部署了我的应用程序,因为我与我的模型进行了互动,所以它正在运行。但是,当我尝试在我的机器上本地运行相同的项目(从服务器)时,它在控制台中显示以下错误:
Executing handler method OnGetAsync with arguments ((null)) - ModelState is Valid
info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
Entity Framework Core 2.0.2-rtm-10011 initialized 'WebappContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer' with options: None
失败:Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware [0]
执行请求时发生了未处理的异常
System.Data.SqlClient.SqlException(0x80131904):建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:TCP提供程序,错误:40 - 无法打开与SQL Server的连接)
所以我的主要问题是:为什么我在运行相同(部署)的项目时,如果它在我的机器上本地运行时无法连接到数据库?
答案 0 :(得分:0)
检查您的防火墙,您必须允许连接到C:\ Program Files \ Microsoft SQL Server \ MSSQL12.SQLEXPRESS2014 \ MSSQL \ Binn \ sqlservr.exe
确保连接字符串对于您的计算机是正确的,因为它可能与您服务器上的数据库不同