使用RIA WCF项目的Silverlight无法添加常规WCF服务引用

时间:2012-11-07 09:15:18

标签: wcf silverlight visual-studio-2012 ria

我不知道这是否是一个错误/功能,但我需要找到一种方法让它发挥作用。

要重新创建,请使用VS2012,打开一个启用了RIA服务的新SL5项目。创建另一个项目,添加一个简单的WCF服务(或启用SL的WCF)并添加一个接受或返回一个简单对象的方法(我有一个对象,其中包含一个字符串属性)。尝试将其添加为SL项目的服务参考。您将在警告中收到此错误:

  

自定义工具警告:   没有找到与Silverlight 5兼容的端点。除非通过构造函数提供端点信息,否则生成的客户端类将不可用。

并且实际上没有生成生成的代码。

我发现如果我从service方法中删除对象并使用简单的字符串/ int / bool,那么引用就可以了。此外,如果我将相同的服务添加到没有RIA的常规SL应用程序,一切都会像您期望的那样工作。一旦我在这个服务正在运行的应用程序上启用RIA,并更新服务引用,生成的代码就会再次消失。

我记得这曾经有用,因为我的项目同时使用了RIA和外部WCF服务。这是VS2012的新东西吗?有没有办法解决这个问题?

谢谢,

的Eyal

2 个答案:

答案 0 :(得分:7)

我可以复制问题,但只有当Silverlight客户端在其引用的程序集中具有2个System.ServiceModel.DomainServices.Client和System.ServiceModel.DomainServices.Client.Web程序集时,才会发生这种情况。并且只有它针对SL 5。

如果您的情况许可,我建议您尝试2种解决方法:

1)将Silverlight应用程序更改为目标Silverlight 4,而不是5,或 2)右键单击“服务引用”并要求配置它。    单击“在指定的引用程序集中重用类型”复选框    并选择除上述2之外的所有装配

这似乎是与SL 5或VS2012相关的错误。如果我找到一个更令人满意的答案,我会转发。

答案 1 :(得分:1)

问题是因为Silverlight 5和vs 2012有一些bug。 [它可以通过重新启动vs2012来解决]

如果你看看你的ServiceRefrences.ClientConfig会看到它是空的。您需要在此手动输入服务参考。我附上了我的配置页面的示例,您需要相应地更改名称

<configuration>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_IService2" maxBufferSize="2147483647"
                maxReceivedMessageSize="2147483647">
                <security mode="None" />
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="../Service2.svc" binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_IService2" contract="ServiceReference1.IService2"
            name="BasicHttpBinding_IService2" />
    </client>
</system.serviceModel>