2

asp.netアプリケーションのメンバーシッププロバイダからいくつかの設定を取得しようとしていますappSettingsセクションにある情報を複製する)が、私は次の例外を取得しています:web.configからセクションを開こうとすると、ConfigurationErrorsExceptionが発生します。既にエントリKEYが追加されています

var configurationManager = WebConfigurationManager.OpenWebConfiguration("/", "IntranetWebapp"); 
var section = (MembershipSection) configurationManager.GetSection("system.web/membership"); 

例外が2行目に発生します

System.Configuration.ConfigurationErrorsException: The entry 'MyMembershipProvider' has already been added. (C:\Inetpub\intranet-webapp\web.config line 53) 

私のコードは次のようです。 configファイルに新しい情報を追加しようとしているわけではないので、私はそれが完全に奇妙であると感じます。代わりに、私はそれを取得しようとしています。私のconfigセクションの

内容:すべてのヘルプははるかに高く評価されて

<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

問題のConfigセクションの内容を投稿できますか? –

+0

@Zhaphは役に立つかどうかわかりませんが、ここには... – Pablo

+0

2番目の行は読まないでください:var section =(MembershipSection)configurationManager.GetSection( "system.web/membership") ;? –

答えて

1

私は期待したい。

私が考えることができるのは、ConfigurationFile.Getsectionを使用してデータをメイン設定にマージしようとしているか、OpenWebConfigurationのオーバーロードを使用して、 web.configを階層内の別の領域からサイトに開くことができました - IIS/.NETで定義されている複数のアプリケーションのいずれかがメンバシップ設定の値と矛盾しますか?

最後に、(プロバイダのデータストア内の)アプリケーションの名前である "IntranetApp"ではなく、 "MyIntranetMembershipProvider"(プロバイダの名前)であるDefaultProviderの値を読み取るべきではありません。

+0

申し訳ありませんが、私はXMLコードを匿名で綴っていました。プロバイダの宣言はすべて正しいです。 GetSectionメソッドの目的は、設定ファイルの内容を読み込むのではなく、変更することです。 – Pablo

+0

これは、設定ファイルを読み書きして動作するようにするためです。また、GetSectionの正しい行(私の2番目のコメントに従って)です。 AppSettingsで複製を避けようとしているプロバイダの側面は何ですか? –

0

サイトを同じサイトの仮想ディレクトリにコピーした後、同じエラーが表示されました。私はそこにいくつかの遺産があると思う。

私は疑問に行の前にこの権利を追加することで回避することができました:

<remove name="MyMembershipProvider"/> 
+0

ところで、WebConfigurationManagerの仕組みは、呼び出された場所からアプリケーションのルートにバックアップした後、さまざまなweb.configとmachine.configにフォルダー構造のweb.configファイルをまとめたものですフレームワーク構成フォルダ内のファイル。 –

2

で私は、関連するスレッドで、何CzechDeveloper didをすることによってこの問題を解決することができました:

<clear /> 

重要:これは重複している入れ子要素のすぐ上に置いたときにのみ役に立ちました。

<sso> 
    <stores> 
    <clear /> 
    <store name="Store1" apiKey="abcd" /> 
    <store name="Store2" apiKey="efgh" /> 
    </stores> 
</sso> 

または、私たちが指摘 therealsix としてvirtual directoriesを追加し始めたとき、これらの問題を見始めた