vs2012在xap中的ServiceReferences.ClientConfig中创建虚假服务

时间:2014-02-13 09:35:09

标签: silverlight visual-studio-2012 client config xap

我不知道这是否算作错误,但我确信这绝对是错误的。我正在处理三个项目:两个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文件)。

我必须继续与他们斗争。神救救我。

1 个答案:

答案 0 :(得分:0)

今天有类似的问题。我正在运行VS2013 Update 2.

在项目中,我已将发布设置配置为使用发布配置,但是,我始终使用调试解决方案配置进行构建。设置解决方案配置以匹配您的发布设置。在我的案例中设置为Release。构建项目并发布。 xap现在应该包含正确的ServiceReference.ClientConfig文件。

您可以使用VS标准工具栏中的下拉列表更改解决方案配置,或右键单击解决方案资源管理器中的解决方案选择属性 - &gt;配置属性并使用顶部的配置下拉列表。

希望这有帮助。