尝试为文件...\WebSite\App_Data\aspnetdb.mdf 附加自动命名的数据库失败

2010年1月24日12:48:59

背景

今天开始coding家园志,首先是写数据访问层的东东。一开始就碰上了连接字符串配置的问题。

/// <summary>
/// 获取连接字符串
/// </summary>
public static string ConnectionString {
    get {
        string _connectionString = ConfigurationManager.ConnectionStrings[0].ToString();
        return _connectionString;
    }
}

显然,连接字符串就是web.config里connectionStrings 元素的第一个了。

  <connectionStrings>
    <add name="NcuhomeORGConnectionString" connectionString="Data Source=LVFEI-PC;Initial Catalog=NcuhomeORG;Integrated Security=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>

但是程序一运行就报错误了:

附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中。  

产生错误的原因

web.config里面有默认配置,除非在配置文件中使用 clear 元素,否则将继承父配置文件中包含的连接字符串。下面的默认 connectionStrings 元素是在 Machine.config 文件中配置的。

解决方法:

     方法一:改动web.config,在connectionStrings节点下先添加<clear />节点,这样就不会使用默认配置了。

<connectionStrings>
  <clear/>
  <add name="NcuhomeORGConnectionString" connectionString="Data Source=LVFEI-PC;Initial Catalog=NcuhomeORG;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>

    方法二:将ConnectionStrings[0]改成ConnectionStrings[1].

    方法三:不用索引,改用节点的name这样最不容易出错(推荐),如这里可以改成ConnectionStrings[“NcuhomeORGConnectionString”]。

posted @ 2010-01-24 16:49  吕飞  阅读(4300)  评论(0)    收藏  举报