ASP.Net成员资格错误CREATE DATABASE失败。无法创建列出的某些文件名。检查相关错误

时间:2016-11-28 17:11:34

标签: asp.net vb.net asp.net-membership

我正在尝试将AP.Net成员资格添加到我的数据库中。我过去已经成功了,所以我对我正在做的事情有所了解。我的项目是一个带有Framework 4.5.2的VB.Net网站。我在框架4中使用了asp_regsql.exe来将模式添加到我的数据库中。我创建了以下web.config条目(根据MSDN文章):

<connectionStrings>
<add name="AFKMSConnectionString" providerName="System.Data.SqlClient" connectionString="working as intended" />    

  <system.web>
<authentication mode="Forms" >
  <forms loginUrl="Account/Login.aspx"
    name=".ASPXFORMSAUTH" />
</authentication>
<!--<authorization>
  <deny users="?" />
</authorization>-->
<compilation debug="true" targetFramework="4.5.2"/>
<httpRuntime targetFramework="4.5.2"/>
<pages>
  <namespaces>
    <add namespace="System.Web.Optimization"/>
    <add namespace="Microsoft.AspNet.Identity"/>
  </namespaces>
  <controls>
    <add assembly="Microsoft.AspNet.Web.Optimization.WebForms" namespace="Microsoft.AspNet.Web.Optimization.WebForms" tagPrefix="webopt"/>
  </controls>
</pages>
<membership defaultProvider="SqlMembershipProvider" userIsOnlineTimeWindow="15">
  <providers>
    <clear/>
    <add
    name="SqlMembershipProvider"
    type="System.Web.Security.SqlMembershipProvider"
    connectionStringName="AFKMSConnectionString"
    applicationName="AFKMS"
    enablePasswordRetrieval="false"
    enablePasswordReset="true"
    requiresQuestionAndAnswer="false"
    requiresUniqueEmail="true"
    passwordFormat="Hashed" />
  </providers>
</membership>
<profile enabled ="true" defaultProvider="SqlProvider">
  <providers>
    <clear />
    <add name="SqlProvider"
      type="System.Web.Profile.SqlProfileProvider"
      connectionStringName="AFKMSConnectionString"
      applicationName="AFKMS"
      description="SqlProfileProvider for SampleApplication" />
  </providers>
</profile>
<roleManager enabled ="true"
           defaultProvider ="SqlRoleProvider" >
  <providers>
    <clear/>
    <add name ="SqlRoleProvider"
         type="System.Web.Security.SqlRoleProvider"
         connectionStringName="AFKMSConnectionString"
         applicationName="AFKMS"/>

  </providers>
</roleManager>

我的连接字符串适用于我当前的函数但是当我尝试注册用户时,我收到以下错误:

  

文件的目录查找&#34; C:\ Users \ Dan \ Source \ Repos \ AFKMS \ AFKMS \ App_Data \ aspnet-AFKMS-140073d4-6858-4f19-9555-0edfbaadd43a.mdf&#34;操作系统错误2失败(系统找不到指定的文件。)。   CREATE DATABASE失败。无法创建列出的某些文件名。检查相关错误。

这来自账户/注册,

Dim result = manager.Create(user,Password.Text)

为什么要创建数据库?我错过了什么?

2 个答案:

答案 0 :(得分:2)

<connectionStrings>
<add name="AFKMSConnectionString" connectionString="data source=.;Initial Catalog=your_db_name;integrated security=True" providerName="System.Data.SqlClient" />
</connectionStrings>

您可以向我们提供您如何创建用户的代码吗? 你提到:昏暗的结果= manager.Create(user,Password.Text) 我认为你需要使用:

Membership.CreateUser(UserName, Password, Email) 

答案 1 :(得分:1)

我假设您已使用Web窗体模板创建了新的ASP.NET Web应用程序?

在这种情况下,您似乎尝试使用原始成员资格提供程序配置设置配置较新的ASP.NET Identity系统。

Ahmed所述,您在注册页面中提到manager.Create(user, Password.Text)的调用 - 这是使用ASP.NET身份的ApplicationUserManager。

如果你查看项目的 App_Start 文件夹,你应该找到一个名为 IdentityConfig.vb 的文件(假设你正在使用VB.NET),它有一个返回Create的方法ApplicationUserManager - 这又调用在Models文件夹中创建的 ApplicationDbContext 类,该类将被定义为使用名为{的连接{1}} - 默认情况下,它被设置为以项目命名的App_Data文件夹中的独立.mdf文件。

您应该将其更改为指向您的连接字符串,但请注意,这使用Entity Framework为您创建数据库架构 - 它应该只是将其添加到现有数据库,但您应该确保已经支持在你开始之前它以防万一它首先丢弃所有东西。