我在我的网络服务器上通过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我正在考虑在代码中手动配置运行时的端点和绑定,但这是我的最后手段。我真的想知道为什么这会让我适合几台客户端机器,而在其他地方工作正常。
谢谢你的时间!
答案 0 :(得分:0)
问题已解决。
问题是Win7由于某种原因在“兼容模式”中安装了我的应用程序(很久以前)的旧版本,它将<appname>.exe.config
文件的旧版本保留在隐藏位置,并且Win7继续即使安装了新版本,也要挂起那个旧文件。
我转到客户端计算机上的应用程序根目录,单击“兼容性文件”按钮,然后删除旧的<appname>.exe.config
和walla!