我不知道这是否算作错误,但我确信这绝对是错误的。我正在处理三个项目:两个Silverlight项目A和B,以及一个Silverlight类库projet C.有一些常见的任务,A和B都需要完成,所以我把它们放到项目C中,A和B都参考C.在项目C中,调用WCF服务。 vs2012为C创建一个客户端配置文件以引用WCF服务。配置文件的关键内容如下:
<endpoint address="http://localhost:15154/StaffService.svc"
binding="..." bindingConfiguration="..."
contract="..."
name="..." />
请注意,地址是绝对的。在运行时,调用WCF服务的C中的代码使用了他的invoinking应用程序的客户端配置文件,这里命名为A和B.所以我模仿vs对Silverlight应用程序和在项目A和B客户端cofig文件中手动创建相对uri喜欢下面并删除C中的客户端配置文件。
<endpoint address="../StaffService.svc"
binding="..." bindingConfiguration="..."
contract="..."
name="..." />
这个相对uri意味着C中的服务客户端类将从下载A和B作为xap的父文件夹中找到配置。到目前为止,在我发布包含A和B的网站之前,一切都很顺利。
我对我的项目在开发环境中的表现感到非常满意,并且在我部署它们之后,在一些VIP之前阻尼了我。该计划什么都不做。屏幕只是一张白纸。
经过一整天的挖掘,我发现班级图书馆C没有工作。问题的根源是xap中的客户端配置文件。尽管我已经手动创建了具有相对路径的配置文件,但是在xap中的客户端配置文件中(如何查看它:将.xap重命名为.zip然后将其打开为普通的zip文件),它再次被修改为abosolute uri就像第一个:
address="http://localhost:15154/StaffService.svc"
当然在运行时找不到该地址的任何服务。我猜到了发生了什么:当我发布网站时,vs为每个引用WCF服务的项目重新创建新的客户端配置文件,并添加这个新创建的配置文件,但不是我手动创建的配置文件到xap。
是否存在针对这个问题的补救措施?
我感到非常不幸的是,在我手动将uri拉回到右边后出现了新的问题。客户端浏览器始终加载旧版本的应用程序。我试图使用mage -cc清除应用程序缓存,在客户端使用Siverlight配置工具,重新启动IIS等。所有这些都不起作用。我不知道以下问题是否与我修改xap有关(我没有检查签名xap文件)。
我必须继续与他们斗争。神救救我。
答案 0 :(得分:0)
今天有类似的问题。我正在运行VS2013 Update 2.
在项目中,我已将发布设置配置为使用发布配置,但是,我始终使用调试解决方案配置进行构建。设置解决方案配置以匹配您的发布设置。在我的案例中设置为Release。构建项目并发布。 xap现在应该包含正确的ServiceReference.ClientConfig文件。
您可以使用VS标准工具栏中的下拉列表更改解决方案配置,或右键单击解决方案资源管理器中的解决方案选择属性 - &gt;配置属性并使用顶部的配置下拉列表。
希望这有帮助。