bugfix> c# > 投稿

1つのサイトのユーザーと管理プロジェクトである同じサーバーでホストされている2つのWebプロジェクトがあります。アプリ設定(アプリ設定のキー)の値を動的に変更したい

同じプロジェクトでweb.configの値をプログラムで変更する方法は知っていますが、プロジェクトが異なると、

System.Configuration.ExeConfigurationFileMap configFile = new System.Configuration.ExeConfigurationFileMap();
configFile.ExeConfigFilename = "ConsoleTester.exe.config";  //name of your config file, can be from your app or external
System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(configFile, System.Configuration.ConfigurationUserLevel.None);
System.Configuration.KeyValueConfigurationCollection settings = config.AppSettings.Settings;
settings["DD"].Value = "007_Access";
config.Save();

回答 3 件
  • 私の問題は、1つのコードベースがあり、異なる機能を持つ2つのアプリケーションインスタンスを提供する必要があるということです。

    First of all its not good idea to modify your web.config at runtime.

    分離されたweb.configを持つ1つのコードベースに基づいて2つのアプリケーションインスタンスを作成するには、IISの仮想ディレクトリ機能を使用できます。 2つのweb.config(分離ディレクトリ)を使用してIIS上に2つのWebアプリケーションを作成し、コードベースを指す仮想ディレクトリを定義します。

  • IIS 7以降には、アプリケーションを作成し、構成を変更できるC#APIがあります。

    ドキュメントはこちらMicrosoft.Web.Administration

    このコードを使用すると、次のことがわかります。

      var serverManager = new ServerManager();
       var site = serverManager.Sites["SiteName"];
       var app = site.Applications["MyAppName"];
       var config = app.GetWebConfiguration();
       var section = config.GetSection("appSettings");
       var element = section.GetChildElement("mySettingKey");
       element.SetAttributeValue("value", "MyNewValue");
       serverManager.CommitChanges();
    
    

  • あなたは app_offline.htm を作ることができます  あなたのサイトをダウンさせるファイル。あなたがしなければならないのは、あなたのウェブサイトのルートディレクトリにファイルを置くだけで、IISはあなたのために残りをします。 app_offline.htm にメンテナンスメッセージを追加できます。  ユーザーが app_offline.htm のみを表示している間にメンテナンスを行います  ページ

    本当にプログラムで行きたいのなら。不要な場合はファイルの名前を別の名前に変更し、名前を app_offline.htm に戻すことができます。  サイトを削除したいとき。

あなたの答え