Webアプリケーションを使用している場合、以下のコード行
Configuration objConfig =
ConfigurationManager.OpenExeConfiguration( ConfigurationUserLevel.None);
クラスライブラリでこのエラーが発生しています:
「スタンドアロンexe内で実行していない場合は、exePathを指定する必要があります。」
以前はコンソールアプリケーションが使用されていて、コードはapp.config
にアクセスできました。クラスライブラリでSystem.Web.Configuration
を使用してみましたが、[参照の追加]の.Netタブにdllがありませんでした。
親切に助けてください:)
Webコンテキストで別の構成マネージャーを使用する必要があります。次のコードブロックは、これに対処する方法の例を示しています。
System.Configuration.Configuration configuration = null;
if (System.Web.HttpContext.Current != null)
{
configuration =
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
}
else
{
configuration =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
}
私はあなたが何をしているのかわかりません。しかし、一見すると、WinFormsアプリケーション用に作成されたコードをWeb環境で使用しようとしているように見えます。 Webアプリには必要な権限がないため、これはほぼ確実に機能しません。
Web環境でこれを行う方法を調べてみてください(構成ファイルを扱っているようなので、WEB.CONFIGで検索してみてください)。
@shaneからの回答を使用しようとしましたが、Hangfireを使用して同じ例外が発生しました。このコードは私にとってもうまくいきました:
System.Configuration.Configuration configFile = null;
if (System.Web.HttpContext.Current != null)
{
configFile =
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
}
else
{
System.Configuration.ExeConfigurationFileMap map = new ExeConfigurationFileMap { ExeConfigFilename = $"{System.AppDomain.CurrentDomain.BaseDirectory}Web.Config" };
configFile = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
}
Web.configを編集するとアプリケーションプールが再起動することに注意してください!