【问题标题】:Adding link to Web Reference from a Project - ChannelBase not found从项目中添加指向 Web 参考的链接 - 未找到 ChannelBase
【发布时间】:2010-09-28 22:44:38
【问题描述】:

我正在构建一个 Silverlight 应用程序。因为我有 Silverlight 和 .NET 模块使用的类,所以我创建了一个 Silverlight 项目,其中包含所有类,然后,一个 .NET 项目链接(“添加链接”)到 Silverlight 项目中的类。这样,我将一个类文件分别编译为 Silverlight 和 .NET 程序集。我想为 Web 服务引用复制相同的内容。意思是,我在 Silverlight 项目中有网络参考。我正在尝试将 Silverlight 项目中的 reference.cs 的“添加链接”添加到 .NET 项目中。当我编译 .NET 项目时,ChannelBase 类没有得到解决,这似乎是由于 Silverlight 和 .NET 框架库中的类定义存在差异。这会导致编译错误,说明未解析的 ChannelBase。听起来对我来说是个死胡同。您找到解决此问题的方法了吗?

【问题讨论】:

  • 你找到答案了吗?
  • 注意:如果您只是要编译它(即用于单元测试并且您永远不会真正使用 WCF 服务),请在您的程序集中创建一个非命名空间类(ChannelBase 其中T : class),并添加构造函数和 BeginInvoke/EndInvoke。我还必须添加 System.ServiceModel.Channels.IHttpCookieContainerManager

标签: silverlight wcf web-services


【解决方案1】:

恐怕这是不可能的。两个代理完全不同:其中一个是同步的,而另一个不是。

您能做的最好的事情是共享服务定义的类,而不是整个代理。只需事先创建这些类,使用“添加为链接”在两个项目中重用它们,然后在添加服务引用时,标记选项“重用引用程序集中的类型”。

【讨论】:

  • 我想我现在会这样做。谢谢!
【解决方案2】:

以防万一其他人偶然发现这一点。我有一个类似的问题。我使用slsvcutil.exe 生成代理并尝试为.net 和monotouch 编译它。我不断收到ChannelBase not found。这根本没有意义。最后,我注释掉了代理客户端类中的 CookieContainer 属性,并且看到编译错误消失了,并且代理适用于 monotouch。

【讨论】:

    猜你喜欢
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 2021-04-02
    • 1970-01-01
    相关资源
    最近更新 更多