【问题标题】:ASP.NET 4.5 membership does not recognize SQL Server data provider at design time?ASP.NET 4.5 成员在设计时无法识别 SQL Server 数据提供程序?
【发布时间】:2013-01-31 21:01:03
【问题描述】:

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

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

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

我尝试从我的网络应用程序中完全删除 aspnetdb.mdf,但它仍然无法识别指向 SQL Serverweb.config 设置,而是使用其他地方的设置(不知道在哪里!) .我知道这一点是因为如果我不提供问题和答案作为参数,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>

【问题讨论】:

    标签: asp.net sql sql-server-2008-r2 membership-provider


    【解决方案1】:

    一些事情......

    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>
    

    【讨论】:

    • 感谢您的回答!不幸的是,它并没有解决我的问题。我最终在 VS2012 中创建了一个新的 Web 应用程序,但这次我立即删除了 App_Data/aspnetdb.mdf 文件,然后进入 Web 配置工具并添加了一个用户。这次它似乎连接到我的 SQL Server ASPNETDB 并在那里添加用户。但是,我注意到,如果我单击 Web 配置工具的 Provider 选项卡并选择了默认提供程序,问题又重新开始了!我正在分析我的两个 web.config 文件,试图确定有什么区别......
    【解决方案2】:

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

    VS2010

    或者

    VS 2012 > 项目 > ASP.Net 配置

    还有一个是加清-Don't forget to when adding providers

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-30
      • 2017-10-28
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多