【发布时间】:2018-04-18 17:33:56
【问题描述】:
我有一个干净的 .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 的连接)
所以我的主要问题是:为什么在我的机器上本地运行相同(已部署)项目时,我无法连接到数据库?
【问题讨论】:
-
本地运行时,你使用的是IP地址吗?什么IP?还是你用的是 localhost?
-
我使用的是服务器的 IP 地址,而不是 localhost。
标签: c# json sql-server