2

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");

2 行目で例外が発生します。構成ファイルに新しい情報を追加しようとしているわけではないので、完全に奇妙だと思います。代わりに、私はそれを取得しようとしています。

私の設定セクションの内容:

<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>

どんな助けでも大歓迎です。

パブロ

4

3 に答える 3

3

関連スレッドでCzechDeveloperが行ったことを実行することで、この問題を修正できました。

<clear />

重要: これは、複製されたネストされた要素の真上に配置した場合にのみ機能しました。

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

またrealsix が指摘するように、仮想ディレクトリの追加を開始したときにも、これらの問題が発生し始めました。

于 2015-04-08T19:50:36.707 に答える
1

私のコメントからの修正を想定すると、コードに問題は見られません.まったく同じものを使用すると(明らかにサイトプロパティの値が異なります)、期待どおりにセクション変数が入力されます。

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

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

于 2009-08-27T13:51:48.803 に答える
0

サイトを同じサイトの下の仮想ディレクトリにコピーした後、同じエラーが発生しました。そこには何らかの継承があると思います。

問題の行の直前にこれを追加することで回避できました:

<remove name="MyMembershipProvider"/>
于 2009-08-27T15:35:47.493 に答える