“无法找到默认端点元素...”,仅在某些客户端计算机上

时间:2014-02-08 06:24:31

标签: .net wcf wcf-binding

我在我的网络服务器上通过IIS托管了几个WCF服务(.net 4.0)。这些服务由我的winforms客户端应用程序(vb.net 4.0)使用。在我的测试机器上(一台XP,一台Win7和一台Win8.1),一切正常。我已经将我的应用程序部署到了我的客户端,并实现了这个新功能,并且我的客户已经安装了它的前100台计算机的一切都很顺利。

我今天有一个客户端收到此错误。以下是完整错误仅供参考:

无法在ServiceModel客户端配置部分中找到引用合同“NetworkTimeCheck.INetworkTimeCheck”的默认端点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素。

我远程登录他的机器,发现<appname>.exe.config文件已经过时(来自过去的版本),并且msi安装程序没有用新的配置覆盖旧配置。我不确定为什么会在这台特定的机器上发生这种情况(它已在其他机器上的所有先前安装中被覆盖)。无论如何,通过卸载并重新安装应用程序,我能够轻松地解决该问题。我将其描述为一个怪异的事件并继续前进。

我有第二个客户端,有三台笔记本电脑运行Win7,他得到完全相同的错误(他的其他三台机器没有错误,一切正常!)。我转发到他的一台问题机器,发现<appname>.exe.config文件是最新的,并确实包含了<system.serviceModel>部分。我已卸载/重新安装但没有成功。我还在Visual Studio中更新了我的服务引用,只是为了嘻嘻哈哈,并在他的机器上安装了一个新版本......仍然没有快乐......

我确信我的应用程序能够访问这些问题机器上的<appname>.exe.config文件,因为我在<applicationSettings>部分设置了帮助命名空间,并且应用程序打开帮助文件没有问题

所以,我的问题是,为什么我会收到此错误!?

PS我正在考虑在代码中手动配置运行时的端点和绑定,但这是我的最后手段。我真的想知道为什么这会让我适合几台客户端机器,而在其他地方工作正常。

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

问题已解决。

问题是Win7由于某种原因在“兼容模式”中安装了我的应用程序(很久以前)的旧版本,它将<appname>.exe.config文件的旧版本保留在隐藏位置,并且Win7继续即使安装了新版本,也要挂起那个旧文件。

我转到客户端计算机上的应用程序根目录,单击“兼容性文件”按钮,然后删除旧的<appname>.exe.config和walla!

参考更多信息:https://stackoverflow.com/a/8471259/2949093