私は最近私のプログラムにWCFサービスリファレンスを追加しました。このプログラムのクリーンインストールを実行すると、すべてが期待どおりに動作するように見えます。しかし、以前のバージョン(新しいサービス参照なし)がインストールされているクライアントにプログラムをインストールすると、この特定のサービスのデフォルトエンドポイントが見つからないという例外が表示されます。プログラム更新後にWCFサービスが動作しない
appname.exe.configが新しいエンドポイント設定で更新されていないようです。これには何らかの理由があり、インストーラが設定ファイルを上書きするように強制する方法はありますか? RemovePreviousVersionsをTrueに設定して、デフォルトのVisual Studio 2008インストーラプロジェクトを使用しています。
更新: 私のプログラムは、私はApp.configファイルが更新される新しいバージョンをインストールする前に、プログラムを実行しないでください次のコード
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ConfigurationSection section = config.GetSection(sectionKey);
if (section != null)
{
if (!section.SectionInformation.IsProtected)
{
if (!section.ElementInformation.IsLocked)
{
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
section.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
}
}
}
との最初の実行後の設定のセクションを暗号化します。
これを試してみましたが、設定ファイルがコピーされていますd。最初にアンインストールするとアプリケーションは正常に動作します。また、現在の設定ファイルを削除して後で更新するときにも動作します。 –
マシンにプログラムや設定ファイルのコピーがいくつかあることを確認してください。 –
古いバージョンをクリーンなPCにインストールし、プログラムを実行して閉じ、新しいバージョンをインストールしました。同じエラーが発生しました。その後、私はプログラムをアンインストールし、今回は同じことをしましたが、プログラムを実行せずに動作しました。私のapp.configファイルには、暗号化された設定セクションが含まれています。これはトラブルの原因になりますか? –