我使用连接字符串时无法连接到SQL Server:
此代码运行良好:
SqlConnection db_connection = new SqlConnection("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=master;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
db_connection.Open();
但是如果将其放在Web.config上:
<connectionStrings>
<add name="conn" connectionString="Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=master;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" />
</connectionStrings>
然后在我的页面上
SqlConnection db_connection = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ToString());
db_connection.Open(); // fail - error 50
因此,只有在我不使用配置管理器的情况下,它才会起作用...
答案 0 :(得分:1)
问题是服务器和实例名称之间的斜杠被转义以用于解释字符串的代码,但是在[app | web] .config文件中,它知道其中会有有趣的字符,并相应地进行处理,而无需代码进行转义。
删除(localdb)
和MSSQLLocalDB
之间的双斜杠为我解决了这个问题。在您的connectionStrings配置中尝试以下操作:
<connectionStrings>
<add name="conn" connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=master;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" />
</connectionStrings>
答案 1 :(得分:-1)
我会尝试以下操作:
1。)将对ConnectionString属性的访问移出构造函数,并将其分配给变量。
2。)然后构造SqlConnection(建议通过using语句实现,因此可以正确处理数据库连接)。例如:
var connectionString = ConfigurationManager.ConnectionStrings["conn"].ToString();
using (var db_connection = new SqlConnection(connectionString))
{
db_connection.Open();
}
如果对db_connection的调用仍然失败,则可以在connectionString处设置断点,在调试器中运行程序并检查connectionString的内容。
答案 2 :(得分:-1)
您好尝试使用此 1.在参考中添加System.Configuration 2.使用System.Configuration写入cs 3. var connectionString = ConfigurationManager.ConnectionStrings [“ conn”]。ToString();
将此放入配置文件