Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.Net成员资格错误创建数据库失败。无法创建列出的某些文件名。检查相关错误_Asp.net_Vb.net_Asp.net Membership - Fatal编程技术网

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

ASP.Net成员资格错误创建数据库失败。无法创建列出的某些文件名。检查相关错误,asp.net,vb.net,asp.net-membership,Asp.net,Vb.net,Asp.net Membership,我正在尝试将AP.Net成员资格添加到我的数据库中。我过去在这方面做得很成功,所以我对自己正在做的事情有了一些想法。我的项目是一个VB.Net网站,框架为4.5.2。我在Framework4中使用asp_regsql.exe将架构添加到我的数据库中。我创建了以下web.config条目(根据MSDN文章): 我的连接字符串适用于我的当前函数,但当我尝试注册用户时,会出现以下错误: 文件“C:\Users\Dan\Source\Repos\AFKMS\AFKMS\App_Data\asp

我正在尝试将AP.Net成员资格添加到我的数据库中。我过去在这方面做得很成功,所以我对自己正在做的事情有了一些想法。我的项目是一个VB.Net网站,框架为4.5.2。我在Framework4中使用asp_regsql.exe将架构添加到我的数据库中。我创建了以下web.config条目(根据MSDN文章):



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

文件“C:\Users\Dan\Source\Repos\AFKMS\AFKMS\App_Data\aspnet-AFKMS-140073d4-6858-4f19-9555-0edfbadd43a.mdf”的目录查找失败,操作系统错误为2(系统找不到指定的文件)。 创建数据库失败。无法创建列出的某些文件名。检查相关错误

这来自帐户/注册表

Dim结果=manager.Create(用户、密码、文本)


为什么要创建一个数据库?我缺少了什么?

我假设您已经使用Web表单模板创建了一个新的ASP.NET Web应用程序

<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)
-这是使用ASP.NET标识中的ApplicationUserManager

如果您在项目的App_Start文件夹中查找,应该会找到名为IdentityConfig.vb的文件(假设您使用的是vb.NET),它有一个方法
Create
,该方法返回
ApplicationUserManager
——这反过来调用在Models文件夹中创建的ApplicationDbContext类,该类将被定义为使用名为
“DefaultConnection”的连接
-默认情况下,该文件设置为以项目命名的App_数据文件夹中的独立.mdf文件


您应该将其更改为指向您的连接字符串,但请注意,这使用Entity Framework为您创建数据库架构-它应该只将其添加到现有数据库中,但是您应该确保在开始之前已经备份了它,以防它先删除所有内容。

您的
web.config
中没有连接字符串。成员资格和角色提供程序配置部分引用了连接字符串,但它不存在@艾哈迈德的回答是正确的。我遗漏了引用的连接字符串。它适用于我目前拥有的所有其他应用程序功能。我认为ASP.Net 4.5.2应用程序的默认值可能是Identity Framework 2.0,而不是旧的成员资格框架,因此它不使用您的连接字符串。我尝试了Framework 2中的aspnet_regsql(在删除另一个后)并得到了相同的结果。这是asp.net 4.5.2中注册页面中提供的默认代码。我没有看到App_Start文件夹,也没有找到IdentityConfig.vb文件。我将浏览你链接的ASP.NET身份网站的链接,并仔细阅读,看看是否能找到适用的内容。老实说,我没有安装VB模板,所以我使用的是C#templates-你应该能够在项目中搜索
manager
是一种类型的类,并从那里开始跟踪它-你有模型吗文件夹?我没有用MVC,我用的是webforms。我确实找到了另一个对defaultconnection的引用并对其进行了更改,但没有看到任何改进。MVC和web表单都默认使用ASP.Net标识(我假设您使用的是web表单)。
  <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>
<connectionStrings>
<add name="AFKMSConnectionString" connectionString="data source=.;Initial Catalog=your_db_name;integrated security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
Membership.CreateUser(UserName, Password, Email)