【问题标题】:Attempt to attach an auto-named database for .mdf file failed尝试为 .mdf 文件附加自动命名的数据库失败
【发布时间】:2012-02-03 13:59:00
【问题描述】:

我目前正在 Visual Studio 2010 中构建一个 Web 应用程序项目,直到最近,我才需要使用 ASPNETDB.mdf 数据库文件中存储的成员资格、用户和角色等的脚手架代码。我一直在 Visual Studio Web 服务器、IIS Express(来自 Visual Studio)和 IIS7.5 上运行该项目,没有任何问题。

但是,我现在需要合并用户帐户,当我使用脚手架代码登录时,我收到一个服务器错误说明:

尝试为文件 C:\Users\User\Documents\COMP6059\PomumV2\PomumV2\App_Data\aspnetdb.mdf 附加自动命名数据库 失败的。存在同名数据库,或 指定的文件无法打开,或者它位于 UNC 共享上。

此错误仅在我使用 IIS Express 或 IIS7.5 Web 服务器时发生。 Visual Studio Web 服务器工作正常。

我已按照http://support.microsoft.com/?kbid=2002980 的指示进行操作,但无济于事。

下面是我的数据库连接字符串:

<add name="ApplicationServices"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
     providerName="System.Data.SqlClient" />

错误发生在AccountController.cs文件(自动生成)的下面一行

...  if (Membership.ValidateUser(model.UserName, model.Password)) { ...

我确实在某处读到过我可能需要将数据库移动到 SQL Server Management Studio 中,然后通过它附加 Visual Studio,但我无法登录到数据库。

我希望它能够在 IIS7.5 上运行。有没有人对如何解决这个问题有任何想法?

【问题讨论】:

    标签: asp.net sql database asp.net-mvc-3


    【解决方案1】:

    这可能是您运行 IIS 的帐户无法访问该文件的问题。

    为网络服务帐户分配对该文件夹的完全权限。

    您可以暂时尝试“每个人”,看看它是否能解决问题,然后从那里倒退。

    同时确保它没有被其他 Web 服务器使用(进程资源管理器/sysinternals 可以帮助您了解这一点)

    【讨论】:

    • Everyone 和 NETWORK SERVICE 组对 App_Data 目录具有完全控制权,但仍然得到相同的结果。可以肯定的是,它没有被任何其他 Web 服务器使用。掌握了流程资源管理器,但不确定我在寻找什么。
    • 在进程资源管理器中搜索数据库名称,如果它正在使用中,它将显示打开它的进程。它可以在 Visual Studio 中打开,VS Web 服务器仍然可以保持等。
    • 我已将 NETWORK SERVICE 授予对我的整个 Documents 文件夹的“完全控制”,这似乎已经解决了上述问题。我现在看到另一个关于“NT AUTHORITY\NETWORK SERVER 登录失败”的错误,但应该作为另一个问题提出,因为它似乎是一个足够独立的问题。
    【解决方案2】:

    检查您的文件夹是否为只读文件夹。为我工作

    【讨论】:

      【解决方案3】:

      看来 OP 已经解决了这个问题,但我认为值得标记我的解决方案,因为它可能会在未来帮助其他人.....

      我遇到了类似的问题,localDB 在实时服务器上进入明显的“只读”模式,但在我的本地开发笔记本电脑上运行良好。

      在阅读了无数这样的帖子之后,尝试了我能找到的一切,它仍然没有用。

      我偶然进入了实时服务器上的 IIS,发现有 3 个数据库连接被识别。 2 个是继承的——我不知道从哪里来——第三个是在本地声明的(例如在网站 web.config 中)。

      我删除了 2 个继承的连接,瞧!现在它工作正常。

      【讨论】:

        【解决方案4】:

        从 VS2013 迁移到 VS2015 社区后出现此问题,同时尝试从 Visual Studio 2013 文件夹打开项目的数据库 .mdf 文件。然后我将带有数据库文件的项目复制到新创建的 Visual Studio 2015 文件夹中,问题就解决了。

        【讨论】:

          猜你喜欢
          • 2012-09-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多