3

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

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

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

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

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

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

谢谢,

埃亚尔

4

2 回答 2

7

我可以重复这个问题,而且它似乎只有在 Silverlight 客户端在其引用的程序集中有 2 个 System.ServiceModel.DomainServices.Client 和 System.ServiceModel.DomainServices.Client.Web 程序集时才会发生。并且仅当它以 SL 5 为目标时。

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

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

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

于 2012-11-12T21:05:27.393 回答
1

问题是因为 silverlight 5 和 vs 2012 有一些错误。【重启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>

于 2013-01-29T06:21:36.973 回答