【问题标题】:WCF service not working after program update程序更新后 WCF 服务不工作
【发布时间】:2009-08-26 15:11:23
【问题描述】:

我最近向我的程序添加了 WCF 服务引用。当我执行该程序的全新安装时,一切似乎都按预期工作。但是,当我在已经安装了以前版本(没有新服务引用)的客户端上安装程序时,我收到一个异常,告诉我找不到此特定服务的默认端点。

appname.exe.config 似乎没有使用新的端点设置进行更新。有什么原因吗?如何强制安装程序覆盖配置文件?我正在使用默认的 Visual Studio 2008 安装程序项目,并将 RemovePreviousVersions 设置为 True。

更新: 我的程序在第一次运行后使用以下代码加密设置部分

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 会更新。

【问题讨论】:

    标签: wcf installation app-config endpoints


    【解决方案1】:

    你是对的,是配置文件没有更新。

    有几种可能:

    • 安装程序有旧版本的配置文件
    • 安装程序没有配置文件,程序使用机器上的旧配置文件

    尝试先卸载项目,然后安装并检查配置文件是否已复制。

    【讨论】:

    • 我已经尝试过了,并且正在复制配置文件。当我第一次卸载它时,该应用程序运行良好。当我删除当前配置文件并随后更新时,它也可以工作。
    • 检查您的机器上没有程序或配置文件的多个副本
    • 我刚刚在干净的电脑上安装了旧版本,运行程序,关闭它并安装了新版本。发生了同样的错误。之后,我卸载了该程序,这一次也做了同样的事情,但没有运行该程序并且它可以工作。我的 app.config 文件包含一个加密的设置部分。这会导致麻烦吗?
    • 是的,可能就是这样。加密是使用机器密钥完成的,但每台机器上的密钥都不同。有一种方法可以使许多机器上的机器密钥相同,通常用于 Web 服务器。
    • 这不能解决问题,因为配置文件已经加密,我必须更新现有安装
    猜你喜欢
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多