3

asp.net web.config ファイルで独自のカスタム キーを作成し、C# で反復処理することはできますか? 両方をどのように行うのですか(キーをどこに置くのですか?どの形式ですか?)?クライアントの IP アドレスに基づいて特定のことを行うイントラネット用のアプリケーションがあります。それらをコードビハインド ファイルにハード コーディングする代わりに、web.config に配置して、それを繰り返すことにしました。そうすれば、すべてを再コンパイルすることなく、構成ファイルに追加または削除することができました。

私のキーには、名前、IP アドレス、およびおそらくその他の情報が含まれます。

ありがとうございました。

4

3 に答える 3

13

私はこれがあなたのためにそれをするべきだと思う...

これはあなたのweb.configにあります...

<configSections>
    <section name="DataBaseKeys" type="System.Configuration.NameValueFileSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</configSections>
<DataBaseKeys>
    <!--Connection Strings for databases (or IP Addresses or whatever)-->
    <add key="dbCon1" value="Data Source=DbServerPath;Integrated Security=True;database=DbName1"/>
    <add key="dbCon2" value="Data Source=DbServerPath;Integrated Security=True;database=DbName1"/>
    <add key="dbCon3" value="Data Source=DbServerPath;Integrated Security=True;database=DbName1"/>
    <add key="dbCon4" value="Data Source=DbServerPath;Integrated Security=True;database=DbName1"/>
    <add key="dbCon5" value="Data Source=DbServerPath;Integrated Security=True;database=DbName1"/>  
</DataBaseKeys>

これはあなたのコードです...

using System.Configuration;

using System.Collections.Specialized;

protected void Page_Load(object sender, EventArgs e)
{
    LoadDdls();
}

private void LoadDdls()
{
    NameValueCollection nvcDbKeys = GetDbKeys();

    //Loop through the collection       
    for (int i = 0; i < nvcDbKeys.Count; i++)
    {
        // "Keys" is the "key" - Get(int) is the "value"
        this.DropDownList1.Items.Add(new ListItem(nvcDbKeys.Keys[i], nvcDbKeys.Get(i)));
    }
}

private NameValueCollection GetDbKeys()
{
    //Declare a name value collection to store Database Key List from web.config
    NameValueCollection nvcDatabaseKeyList;
    nvcDatabaseKeyList = (NameValueCollection) ConfigurationManager.GetSection("DataBaseKeys");

    return nvcDatabaseKeyList;
}
于 2010-03-26T14:55:05.570 に答える
2

カスタム構成セクションを作成できます。これにより、カスタム構成を web.config に配置し、適切な方法でアクセスすることができます。

于 2008-11-25T15:03:42.147 に答える
2

手っ取り早い解決策: キーを appSettings に追加し、インデックスを接尾辞として付けます。「key1」、「key2」など、存在しないキーに到達するまでループします。または、区切りリストを単一のキーに追加します。"値1;値2;値3;...".

より良い解決策: 独自のカスタム セクション ハンドラーを作成し、web.config の別のセクションに独自の方法でデータを追加できます。セクション ハンドラー クラスへの参照を使用して、web.config の上部にセクションとセクション グループを定義する必要があります。

<configuration>
   <configSections>
      <sectionGroup name="MySectionGroup">
          <section name="MySection" type="[type and full assembly name]"/>

   ...
   <MySectionGroup>
      <MySection>
         [some xml]

次に、セクション ハンドラー クラスを作成します。このクラスは、 Createメソッド を定義するインターフェイスIConfigurationSectionHandlerを実装する必要があります。Createは、任意の方法で解析できる XML ノードである sectionNode をパラメーターとして受け取ります。返されるオブジェクトには、解析したデータが含まれている必要があります。セクション ハンドラをロードするには、次のように記述します。

MySectionDataObject myData = ConfigurationManager.GetSection( "MySectionGroup/Section" ) as MySectionDataObject
于 2008-11-25T15:07:14.323 に答える