C# 访问Live或本地提供商上的.NET成员资格

C# 访问Live或本地提供商上的.NET成员资格,c#,asp.net,asp.net-membership,membership-provider,C#,Asp.net,Asp.net Membership,Membership Provider,在我的web.config文件中,我有两个SQL Server连接字符串,一个用于本地,一个用于live: <connectionStrings> <remove name="LocalSqlServer" /> <add name="LocalSqlServer" connectionString="[removed]" providerName="System.Data.SqlClient"/> <add name="Live

在我的web.config文件中,我有两个SQL Server连接字符串,一个用于本地,一个用于live:

<connectionStrings>
    <remove name="LocalSqlServer" />
    <add name="LocalSqlServer" connectionString="[removed]" providerName="System.Data.SqlClient"/>
    <add name="LiveSqlServer" connectionString="[removed]" providerName="System.Data.SqlClient"/>
</connectionStrings>
然后,我的数据库类只使用我的utils类的connectionString属性。所有这些都很好,所以当我在本地放置站点时,我可以简单地将其上传到live,而不必更改配置文件中的连接字符串等,然后它就开始使用我的live数据库

现在我正在我的站点中实现“成员身份”,对于使用某些webmethods的ajax,我将providerUserKey存储在当前登录用户的文本字段中。然后,我的web方法检查该密钥是否经过身份验证。e、 g

ajaxCreds.ajaxID1 = ((MembershipUser)Membership.GetUser()).ProviderUserKey.ToString();
问题: 我的问题是如何知道此成员身份是来自LIVE数据库还是我的本地数据库。正如您从web配置中看到的,我在成员资格/提供者行中添加了(注释掉了),但我不知道如何将它们与上面的membership.getUser()命令一起使用

备选方案。。。这是个好办法吗?还是在我上传到live时编辑web.config文件更简单


非常感谢

大多数人都不是这样做的,尽管我为你弄明白了这一切而鼓掌。通常,人们使用部署管理器或其他构建系统在服务器上使用不同的web.config值,而不是本地值


这里有一个关于部署更改的链接:

我建议您阅读本文:

它会告诉你,其他人也在试图做类似的事情。这就是成功的途径。解决方案(如果调整)可能与您的需求类似

  • 将所有提供程序放入web.config
  • 在应用程序启动时调整默认值(基于环境)
  • 会员资格
    API将根据您对提供程序密钥的需要提供
  • 无需按名称搜索提供商
注意:您必须调整
void应用程序\u Start(objectsender,EventArgs e)
实现,但想法就在这里

注2:您试图做的肯定是而不是异常。基于环境的配置非常智能!必须实现的是标准API使用,例如通过Manager模式调用

  • System.Web.Security.Membership
  • System.Web.Security.Roles

而且不需要按名称调用提供程序。

非常感谢您提供的链接,我非常喜欢使用调试和发布配置文件的简单想法。我不知道他们是怎么用的。我已经创建了自己的“localhost”构建,并为此创建了一个配置文件。查看它,我只需要连接字符串的一个名称,然后将我的成员资格/角色指向该名称,然后在配置中定义本地和实时(调试/发布)的连接。再次感谢。+谢谢你的链接和信息,我将对此进行研究,但乍一看,Peters使用configs的回答似乎是最简单的方法。
ajaxCreds.ajaxID1 = ((MembershipUser)Membership.GetUser()).ProviderUserKey.ToString();