0

最近、自分のプログラムに WCF サービス参照を追加しました。このプログラムのクリーン インストールを実行すると、すべてが期待どおりに動作するように見えます。しかし、以前のバージョン (新しいサービス参照なし) が既にインストールされているクライアントにプログラムをインストールすると、この特定のサービスの既定のエンドポイントが見つからないという例外が発生します。

appname.exe.config が新しいエンドポイント設定で更新されていないようです。これには何らかの理由がありますか? また、インストーラーに構成ファイルを強制的に上書きさせるにはどうすればよいですか? RemovePreviousVersions を True に設定した既定の Visual Studio 2008 インストーラー プロジェクトを使用しています。

更新: 私のプログラムは、最初の実行後に次のコードで設定セクションを暗号化します

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

新しいバージョンをインストールする前にプログラムを実行しないと、app.config が更新されます。

4

1 に答える 1

0

更新されていないのは構成ファイルであることは間違いありません。

いくつかの可能性があります:

  • インストーラーには古いバージョンの構成ファイルがあります
  • インストーラーに設定ファイルがなく、プログラムがマシン上の古いファイルを使用している

最初にプロジェクトをアンインストールしてからインストールし、構成ファイルがコピーされていることを確認してください。

于 2009-08-26T15:20:53.990 に答える