2

我是 Visual Studio 2012 / ASP.NET 4.5 Web 表单的新手。

我正在尝试ASP.NET在我的asp.net 4.5 web forms应用程序(使用Visual Studio 2012)中使用表单身份验证(成员资格),因为我已经成功使用asp.net version 4.0.

问题似乎是,当我在 中进行测试时Visual Studio 2012,它无法识别我web.config指向SQL Server 2008R2 aspnetdb. 它似乎正在使用该SQL Express aspnetdb.mdf文件来存储我的用户。

我尝试aspnetdb.mdf从我的网络应用程序中完全删除它,但它仍然无法识别我web.config指向的设置SQL Server,而是使用其他地方的设置(不知道在哪里!)。我知道这一点,因为Membership.CreateUser()如果我不提供问题和答案作为参数,该方法会引发错误。此外,Web 配置工具需要问答才能创建新用户。我的web.config设置专门没有!

当我托管 Web 应用程序时,它会在SQL Server数据库中查找我的用户,因为当我尝试使用使用 VS2012 中的 Web 配置工具成功创建的用户名登录时,我的应用程序找不到该用户!它似乎在寻找,SQL Server但找不到它。

我一定错过了一些基本设置......有人有什么想法吗?

我在下面包含了我的 web.config 设置:

<connectionStrings>    

  <add name="ApplicationServices" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Persist Security Info=True;User ID=studentid;Password=password" providerName="System.Data.SqlClient"/>
  <add name="StudentAttendanceConnectionString" connectionString="Data Source=localhost;Initial Catalog=StudentAttendance;Persist Security Info=True;User ID=studentid;Password=password" providerName="System.Data.SqlClient"/>
</connectionStrings>

<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880"/>      
</authentication>

<profile defaultProvider="DefaultProfileProvider">
  <providers>
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="ApplicationServices" applicationName="/"/>
  </providers>
</profile>
<membership>
  <providers>
    <add connectionStringName="ApplicationServices" enablePasswordRetrieval="true"
      enablePasswordReset="false" requiresQuestionAndAnswer="false"
      requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6"
      minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
      applicationName="/" name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
 </membership>
 <roleManager>
  <providers>
    <add connectionStringName="ApplicationServices" applicationName="/"
      name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </providers>
  </roleManager>
4

2 回答 2

0

一些东西...

1) 用户或某些帐户是否有权访问 SQL 数据库?我没有看到这里提到的。
2) 使用启动 SQL Management Studio 时出现的 SQL 服务器的服务器名称,如果 IIS 和 SQL 在同一台服务器上,则不要使用 localhost。
3) 检查您的 machine.config 文件以了解您正在使用的 .Net 版本。我最终不得不将 SQL Express 设置更改为服务器的 IP 地址,以便在类似的情况下为我工作,同时删除(通过控制面板)SQL Express 或任何测试数据库 VS 2012 安装。我最近在构建服务器时遇到了与此相关的错误。

::编辑::

还将以下内容添加到“connectionStrings”部分上方的 Web.Config 文件中:

    <startup>
    <supportedRuntime version="4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
于 2013-01-31T21:17:48.603 回答
0

您可以尝试使用 ASP.Net Config 创建角色和用户吗?

VS2010

在此处输入图像描述

或者

VS 2012 > 项目 > ASP.Net 配置

另一种是添加 clear -添加提供程序时不要忘记

于 2013-02-06T18:24:07.860 回答