附加数据库可以登录但不能创建用户“密钥'attachdbfilename'的无效值”

时间:2011-05-11 14:38:11

标签: asp.net asp.net-membership

我在我们的服务器上运行了一个应用程序(它在我的计算机上运行正常并不重要)。 它是一个Windows Server 2003,Sql Express 2008 r2服务器。

我使用附加的数据库来存储用户(asp.net提供的数据库)。

我可以毫无问题地登录到网络应用程序但是当我尝试创建一个用户时,它只是说关键'attachdbfilename'的值无效,黄色死屏。

这里你有web.config

中的连接字符串
<add name="ConnectionStringASPNETDB.MDF" connectionString="Data Source=localhost\SQLEXPRESS_2008;AttachDbFilename=|DataDirectory|\ASPNETDB.MDF;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />

和会员提供者

<add name="daganteckning" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                connectionStringName="ConnectionStringASPNETDB.MDF"
                enablePasswordRetrieval="false"
                enablePasswordReset="false"
                requiresQuestionAndAnswer="false"
                applicationName="/"
                requiresUniqueEmail="false"
                passwordFormat="Hashed"
                description="Stores and retrieves membership data from a Microsoft SQL Server database." />

我唯一的猜测是我必须设置某种目录/文件安全权限,但我不知道用户iis / sql用来访问数据库文件。

有人有个主意吗?

编辑: 我尝试用。\ sqlexpress_2008替换localhost \ sqlexpress_2008,现在我得到了

  

无法打开物理文件   “C:\的Inetpub \ wwwroot的\ MEDLEM_TEST \ App_Data文件\ ASPNETDB.MDF”。   操作系统错误32:“32(   进程无法访问该文件,因为   它被另一个人使用   过程。)“。试图附上一个   自动命名的文件数据库   C:\的Inetpub \ wwwroot的\ MEDLEM_TEST \ App_Data文件\ ASPNETDB.MDF   失败。具有相同名称的数据库   存在,或指定的文件不能   打开,或者它位于UNC分享。

2 个答案:

答案 0 :(得分:1)

检查服务器的防病毒软件或任何其他进程是否可以访问该文件。

您还可以在进行所列更改后尝试回收应用程序。

此外,如果您使用Asp.Net配置工具,它将附加到mdf文件,您的应用程序将在您通过它连接时创建该错误。

答案 1 :(得分:0)

浏览后我发现我没有使用已定义的提供程序,除非我声明我想按名称使用它...所以我通过将<clear />添加到Providers标记并添加属性defaultProvider =来解决它“daganteckning”到会员标签。

<membership defaultProvider="daganteckning">
    <providers>
        <clear />
        <add name="daganteckning" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                connectionStringName="ConnectionStringASPNETDB.MDF"
                enablePasswordRetrieval="false"
                enablePasswordReset="false"
                requiresQuestionAndAnswer="false"
                applicationName="/"
                requiresUniqueEmail="false"
                passwordFormat="Hashed"
                description="Stores and retrieves membership data from a Microsoft SQL Server database." />
    </providers>
    ....
相关问题