如果我在 web.config 中有这样的连接字符串(添加换行符以提高可读性):
<add
name="conn"
connectionString="Data Source=(localdb)\v11.0; Initial
Catalog=MyDB; Integrated Security=True; MultipleActiveResultSets=True;
AttachDbFilename=D:\Products.mdf"
providerName="System.Data.SqlClient"/>
连接有效,我可以连接到数据库资源管理器中的数据库。
当我在代码中指定连接字符串或使用 ConfigurationManager 获取它时,它不起作用:
SqlCommand command = new SqlCommand();
command.CommandText = "select ...";
command.CommandType = CommandType.Text;
SqlConnection cn = new SqlConnection("Data Source=(localdb)\\v11.0;"+
"Initial Catalog=MyDB; Integrated Security=True; "+
"MultipleActiveResultSets=True; AttachDbFilename=D:\\Products.mdf");
command.Connection = cn;
cn.Open();
DataTable dataTable = new DataTable();
SqlDataReader reader;
reader = command.ExecuteReader();
dataTable.Load(reader);
cn.Close();
从 web.config 获取连接字符串给出了相同的错误:
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings
["conn"].ConnectionString;
我得到的错误是“ System.ComponentModel.Win32Exception:找不到网络路径”
在跟踪是说:
建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:命名管道提供者,错误:40 - 无法打开与 SQL Server 的连接)]
我需要一些帮助来解决这个问题,几个小时以来一直在尝试解决这个问题,任何在线建议都是我应该检查网络设置(不适用,因为它连接到 sql server express 的本地实例)。服务器名称(相同的字符串在 VS Express 中有效,但在运行代码中无效)。
会不会是身份验证问题?如果是这样,那么为什么会出现信息错误?
感谢您阅读我的帖子,希望您能帮助我解决这个问题。
更新:
我尝试了以下事情:
赋予组每个人对 mdf 和 ldf 文件的完全权限
在 web 下的项目属性中,我尝试在 VS 开发服务器和本地 IIS web 服务器(是 IIS Express)下运行项目
不走运,将代码复制到使用“ASP.NET 空 Web 应用程序”创建的项目时,仍然无法完美连接