Sql server 2008 网站管理工具:连接名称';LocalSqlServer';在应用程序配置中找不到,或者连接字符串为空

Sql server 2008 网站管理工具:连接名称';LocalSqlServer';在应用程序配置中找不到,或者连接字符串为空,sql-server-2008,asp.net-membership,website-admin-tool,Sql Server 2008,Asp.net Membership,Website Admin Tool,我正在尝试使用网站管理工具为服务器上的网站配置成员身份。我在我的本地SQL Server副本上创建了一个aspnetdb数据库,通过WSAT,我成功地添加了几个角色,并锁定了服务器上的几个目录 但是,当我尝试管理用户时,会出现以下错误: 在应用程序配置中找不到连接名称“LocalSqlServer”,或者连接字符串为空。在System.Web.Configuration.ProvidersHelper.InstanceProvider(ProviderSettings ProviderSetti

我正在尝试使用网站管理工具为服务器上的网站配置成员身份。我在我的本地SQL Server副本上创建了一个aspnetdb数据库,通过WSAT,我成功地添加了几个角色,并锁定了服务器上的几个目录

但是,当我尝试管理用户时,会出现以下错误:

在应用程序配置中找不到连接名称“LocalSqlServer”,或者连接字符串为空。在System.Web.Configuration.ProvidersHelper.InstanceProvider(ProviderSettings ProviderSettings,Type providerType)的System.Web.Security.SqlMembershipProvider.Initialize(字符串名称,NameValueCollection配置)的System.Web.Util.SecUtility.GetConnectionString(NameValueCollection配置)

显然,LocalSqlServer连接字符串是可以的,否则我就无法添加角色,例如

web.config的相关部分如下所示:

  <connectionStrings>
        <clear />
        <remove name="LocalSqlServer"/>
        <add name="LocalSqlServer" connectionString="Data Source=(local);Initial Catalog=aspnetdb;User Id=LoginUser;Password=password;" providerName="System.Data.SqlClient"/>
  </connectionStrings>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880" defaultUrl="~/admin/admin.aspx" />
    </authentication>
        <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
            <providers>
                <clear />
                <add
          name="SqlProvider"
          type="System.Web.Security.SqlMembershipProvider"
          connectionStringName="LocalSqlServer"
          applicationName="myapp" />
            </providers>
        </membership>
    <profile>
      <providers>
        <clear />
                <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="myapp" />
      </providers>
    </profile>
    <roleManager enabled="true">
      <providers>
        <clear />
                <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="myapp" />
      </providers>
    </roleManager>
  </system.web>

据我所知,Clear/Remove元素应该覆盖任何其他配置文件,但无论如何,我尝试将相同的连接字符串添加到相关的machine.config中,但没有效果

有什么想法吗


作为替代方案,有什么原因不能直接调用Membership DB存储过程吗?有人知道任何支持文档吗?

经过一些研究,我为您找到了可能的解决方案。我想你可能读过我找到的一些线索,但我试图指出与你给我们看的版本的不同之处

在角色管理器标记中, 您尚未设置可能导致问题的
defaultProvider

<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">

有关更多详细信息,请参阅。这也是我的参考资料

我也注意到 在
连接字符串中
用户ID的“d”不是大写字母。不确定它是否区分大小写

此外,有些线程似乎会根据需要设置
integratedsecurity=
,在
connectionString
中,您也可以尝试这样做

显然地 默认情况下,成员资格/角色提供程序使用“localSQLServer” 连接字符串[…]设置为指向本地SQL Express 来自根web.config的数据库。在大多数情况下,服务器不会 如果安装了SQL express,则会出现此错误

通过清除连接字符串,应该可以发现这些错误

但是我相信您已经在任何地方使用了
标记,这是正确的

更多参考资料 你可能还想看看,因为这是他们的技术。我给你输入了错误信息,实际上得到了很多结果

最后
如果这些建议中的任何一个都不能解决您的问题,我建议您重新开始“从scracth”逐个添加每个配置。祝你好运

我尽可能地放弃了最初的尝试,重新开始。这次我创建了一个新的、独立的成员数据库,并从machine.config中注释掉了所有角色和成员资格提供程序元素

这并没有解决问题,但在这个过程中,我意识到即使我修改了machine.config,WSAT仍然从某处获取角色提供程序配置。这让我点击了x86 machine.config,这反过来又让我回到了应用程序池——应用程序池被设置为启用32位应用程序

将此重置为false使我能够克服错误,尽管错误不同-但是,我将单独调查此问题,并在必要时创建新的帖子

我不确定为什么32位应用程序池会导致问题-我仍然希望我的web.config(带有
项)会替换从machine.config继承的所有适当设置-无论是哪个版本。因此,可能是我的“重建”的其他部分也做出了贡献;很难说

恐怕这不是我所希望的最终解决方案。

这对我很有效:

  • 在Visual Studio中,转到服务器资源管理器并连接aspnetdb
  • 右键单击aspnetdb-修改连接
  • 如果连接测试有效,请单击“高级”并在窗口按钮处复制连接字符串
  • 在web.config/ConnectionStrings/ApplicationServices/ConnectionString中替换此连接字符串

  • 您还没有找到任何解决方案?@ForceMagic-抱歉,这是一个超时项目。谢谢你的回复,我希望明天能再尝试一下。我想知道defaultRoleProvider是否是问题所在,但遗憾的是事实并非如此。但是谢谢你的想法。@CJM好的,当你发现它时,别忘了更新线程。当做