MVC应用程序正在寻找错误数据库中的凭据

时间:2014-03-27 20:10:01

标签: sql asp.net-mvc entity-framework visual-studio sqlmembershipprovider

我有一个aspnetservicesdb数据库,用于存储用户配置文件。我已经部署了一个新的asp.net mvc应用程序。该应用程序使用appdata目录中的本地sqlexpress数据库进行成员资格/配置文件。

我不希望应用程序使用sqlexpress数据库。

我已从web.config和AuthConfig.RegisterAuth()中删除了连接字符串;来自global.asax

到目前为止,这已经奏效了。我能够成功地在控制器中使用User.Identity.Name。但是,当我尝试在视图中使用User.IsInRole时,我得到了一个sql server not found错误,因为本地sqlexpress db不存在。

如何告诉应用程序使用我现有的数据库并停止查找sql​​express db?

编辑 - 这是连接字符串

<!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=removed;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|removed" providerName="System.Data.SqlClient"/>-->
    <add name="ApplicationServices" connectionString="Data Source=removed;Initial Catalog=aspservicesdb;UID=removed;PWD=removed" providerName="System.Data.SqlClient" />

编辑 - 这是来自网络配置的其他会员资格部分

<authentication mode="Forms">
  <forms loginUrl="~/login.aspx" timeout="2880" />
</authentication>
<membership userIsOnlineTimeWindow="480">
  <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="12" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>

2 个答案:

答案 0 :(得分:0)

您没有告诉asp.net使用会员提供商。这应该是这样的:

<membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="480">

而且,由于你以其他方式获得会员资格,这告诉我你可能正在使用SimpleMembership,这意味着你需要从应用程序中删除SimpleMembership代码(包括用户数据上下文和其他属性)

答案 1 :(得分:0)

事实证明我没有将这些部分添加到网络配置中......

<profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </profile>
    <roleManager enabled="true">
      <providers>
        <clear />
        <add connectionStringName="ApplicationServices" applicationName="/"
          name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </roleManager>

问题似乎已得到解决。