3

我有一个 C#/Entity Framework Web 应用程序在本地 SQL 2012 db 上运行良好。我将数据库复制到一个新的 RDS 实例,并且可以通过 Visual Studio 和 SQL Server Management Studio 访问数据库。

我有一个单元测试,它对用户进行身份验证,然后尝试使用实体框架调用——dataContext.SaveChanges() 在表中插入一条记录。

我收到以下错误:

{"The underlying provider failed on Open."}
{"No such host is known"}
{"A network-related or instance-specific error occurred while establishing a connection to SQL Server. 
The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections.
(provider: TCP Provider, error: 0 - No such host is known.)"}

我整天在网上寻找答案,到目前为止,我发现的任何建议都没有成功:

  • 端口 1433 已打开,我可以通过 Telnet 访问入口点
  • 我的 IP 地址包含在默认安全组的 CIDR/IP 范围内。
  • 一旦我尝试在数据上下文上打开连接,就会发生错误。
  • db 服务器配置为接受远程连接。
  • db 服务器配置为使用混合身份验证(Windows 和 SQL Server)。

实体框架连接字符串

connectionString = "metadata=res://*/MyDb.csdl|res://*/MyDb.ssdl|res://*/MyDb.msl;provider=System.Data.SqlClient;provider connection string="Data Source=MyAwsEntryPoint;Initial Catalog=MyDb;User ID=MyUser;Password=MyPassword;Persist Security Info=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient"

标准数据库连接字符串

connectionString = "Data Source=MyAwsEntryPoint,1433;Initial Catalog=MyDb;User ID=MyUser;Password=MyPassword;Persist Security Info=True;Application Name=MyAppName;"
4

1 回答 1

3

问题出在连接字符串中。具体来说,我在那里有“应用程序名称”和“应用程序”属性。一旦我删除了这些,它就起作用了。

坏的:

<add name="MyDbEntities" connectionString="metadata=res://*/MyDb.csdl|res://*/MyDb.ssdl|res://*/MyDb.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MyDbServer;Initial Catalog=MyDb;Persist Security Info=True;User ID=MyDb;Password=MyPassword;Application Name=MyDb.API.Models;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

好的:

<add name="MyDbEntities" connectionString="metadata=res://*/MyDb.csdl|res://*/MyDb.ssdl|res://*/MyDb.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MyDbServer;Initial Catalog=MyDb;Persist Security Info=True;User ID=MyDb;Password=MyPassword;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
于 2013-04-25T03:19:04.220 回答