使用System.Web.Providers与Sql Compact

时间:2011-07-08 13:57:18

标签: asp.net-mvc-3 asp.net-membership sql-server-ce membership-provider

article shanselman我试图使用“System.Web.Providers”后,您可以使用Sql Server Compact的成员资格,规则和配置文件。

我通过Nuget安装,创建了一个Users.sdf数据库并复制到App_Data文件夹。 我的Web.config如下:

<profile defaultProvider="DefaultProfileProvider">
  <providers>
    <clear />
    <add
      name="DefaultProfileProvider"
      type="System.Web.Providers.DefaultProfileProvider"
      connectionStringName="DefaultConnection"
      applicationName="/" />
  </providers>
</profile>
<membership defaultProvider="DefaultMembershipProvider">
  <providers>
    <clear />
    <add connectionStringName="DefaultConnection" enablePasswordRetrieval="false"
      enablePasswordReset="true" requiresQuestionAndAnswer="false"
      requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6"
      minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
      applicationName="/" name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider" />
  </providers>
</membership>
<roleManager defaultProvider="DefaultRoleProvider">
  <providers>
    <clear />
    <add connectionStringName="DefaultConnection" applicationName="/"
      name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider" />
  </providers>
</roleManager>
<sessionState mode="Custom" customProvider="DefaultSessionProvider">
  <providers>
    <add
      name="DefaultSessionProvider"
      type="System.Web.Providers.DefaultSessionStateProvider"
      connectionStringName="DefaultConnection"
      applicationName="/" />
  </providers>
</sessionState>

<connectionStrings>
  <add name="Sql_CE" connectionString="Data Source=|DataDirectory|\Users.sdf;"
       providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>

我不能使用“aspnet_regsql”,因为它会生成基于SQL Server的表

尝试访问页面安全性上的“网站管理工具”时发生以下错误

  

您选择的问题   数据存储。这可能是由一个引起的   无效的服务器名称或凭据,或   没有足够的许可。它可以   也是由角色经理造成的   功能未启用。点击   下面的按钮被重定向到一个   您可以在其中选择新数据的页面   商店。

     

以下消息可能对您有所帮助   诊断问题:   预应用程序开始初始化   方法从类型开始   WebMatrix.WebData.PreApplicationStartCode   抛出以下例外情况   错误信息:此方法不能   在应用程序期间调用   预启动初始化阶段。

1 个答案:

答案 0 :(得分:2)

首先将连接字符串重命名为DefaultConnection并删除Users.sdf前面的\,如下所示:

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|Users.sdf;"
       providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>

你说你

  

创建了Users.sdf数据库

如何? Providers框架和SqlCe应该为您执行此操作。尝试从App_Data文件夹中删除Users.sdf,然后再次尝试访问“网站管理工具”。提供者引擎应该为您重新创建它。