Silverlight与RIA WCF项目可以';t添加常规WCF服务参考

Silverlight与RIA WCF项目可以';t添加常规WCF服务参考,wcf,silverlight,visual-studio-2012,ria,Wcf,Silverlight,Visual Studio 2012,Ria,我不知道这是否是一个错误/功能,但我需要找到一种方法使其工作 要重新创建,请使用VS2012,打开启用RIA服务的新SL5项目。创建另一个项目,添加一个简单的WCF服务(或支持SL的WCF),并添加一个接受或返回简单对象的方法(我有一个包含一个string属性的对象)。尝试将此作为服务引用添加到您的SL项目中。除其他外,您将在警告中收到此错误: 自定义工具警告: 未找到与Silverlight 5兼容的终结点。除非通过构造函数提供端点信息,否则生成的客户端类将不可用 实际上没有生成任何生成的代码

我不知道这是否是一个错误/功能,但我需要找到一种方法使其工作

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

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

实际上没有生成任何生成的代码

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

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

谢谢


Eyal

我可以复制该问题,并且只有当Silverlight客户端在其引用的程序集中有2个System.ServiceModel.DomainServices.client和System.ServiceModel.DomainServices.client.Web程序集时,才会出现这种情况。而且只有当目标是SL 5时

我发现了两种变通方法,如果您的情况允许,我建议您尝试:

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


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

问题是因为silverlight 5和vs 2012有一些bug。[它可以通过重启vs2012自行解决]

如果查看ServiceRefresents.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>


这实际上帮了大忙。直到我注意到你的建议,我才知道是Silverlight 5&VS2012漏洞。在更新服务参考时,Silverlight 4没有问题。我遇到了VS 2015的问题(2012为我工作)。我必须完全禁用“重用类型…”复选框才能使其工作,仅禁用这两个程序集是不够的。但是谢谢你的提示,它为我指明了正确的方向。