我正在尝试从我的asp.net应用程序中的成员资格提供程序中获取一些设置(这样我就不必复制appSettings部分中的信息)但是我得到以下异常:
System.Configuration.ConfigurationErrorsException: The entry 'MyMembershipProvider' has already been added. (C:\Inetpub\intranet-webapp\web.config line 53)
我的代码如下:
var configurationManager = WebConfigurationManager.OpenWebConfiguration("/", "IntranetWebapp");
var section = (MembershipSection) configurationManager.GetSection("system.web/membership");
第二行引发了异常。我发现它完全奇怪,因为我不想在配置文件中添加任何新信息。相反,我只是想检索它。
我的配置部分的内容:
<membership defaultProvider="IntranetApp">
<providers>
<add applicationName="IntranetApp"
enableSearchMethods="true"
connectionStringName="IntranetConnectionString"
connectionUsername="CN=username,OU=Service Accounts,OU=Users,OU=CompanyName,DC=CompanyName,DC=com"
connectionPassword="********"
name="MyIntranetMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider" />
</providers>
</membership>
非常感谢任何帮助。
巴勃罗
答案 0 :(得分:2)
我能够通过在相关主题中执行CzechDeveloper did来解决此问题:
<clear />
重要提示:当我将它直接放在重复的嵌套元素上方时,这对我有用。
<sso>
<stores>
<clear />
<store name="Store1" apiKey="abcd" />
<store name="Store2" apiKey="efgh" />
</stores>
</sso>
当我们开始添加virtual directories作为 therealsix 指出时,我们也开始看到这些问题。
答案 1 :(得分:1)
假设我的评论得到修复,我看不出你的代码有什么问题 - 使用完全相同的东西(显然有不同的网站属性值)导致填充的部分变量,正如我所期望的那样。 / p>
我唯一能想到的是你要么在ConfigurationFile.Getsection上做其他事情,那就是尝试将数据合并到你的主设置中,或者使用OpenWebConfiguration的重载来获取你所拥有的网站设法从层次结构中的不同区域打开web.config进入您的站点 - 您是否在IIS / .NET中定义了多个应用程序,这些应用程序的成员资格设置会有相互冲突的值?
最后,你不应该将DefaultProvider值读为“MyIntranetMembershipProvider”,这是你的提供者的名字,而不是“IntranetApp”,它是应用程序的名称(在提供者的数据存储区中)。
答案 2 :(得分:0)
在将我的网站复制到同一网站下的虚拟目录后,我遇到了同样的错误。我想那里有一些遗产。
我能够通过在相关行之前添加此权利来解决这个问题:
<remove name="MyMembershipProvider"/>