c# - WCF 服务引用 - 重用类型时未生成代理

标签 c# .net wcf

我有两个 C# (.NET v4.0) 配套项目,一个 ASP.NET 网站和一个“自托管”WCF 控制台应用程序。网站代码为各种事情调用 WCF 服务;两者都是几年前编写的,并且一直运行良好。

控制台应用程序和网站共享它们之间的公共(public)类库(在本例中称为 MyLibrary);这是作为对两个项目的引用添加的。

控制台应用程序非常简单 - 例如,我有 IService.cs:

[ServiceContract]
public interface IService
{               
    [OperationContract]
    List<MyLibrary.MyClass> DoSomething(int ID);
}

然后是Service.cs:

public class Service : IService
{
    public List<MyLibrary.MyClass> DoSomething(int ID)
    {
        // etc
        return result;
    }
}

...所有这些都有效。但是,今天我需要向双方添加一些微不足道的东西——其中一个方法需要添加另一个参数。我已经更新了 WCF 应用程序、构建它、运行它,然后转到该网站并尝试“更新服务引用”。

此时,站点崩溃了:生成服务引用不再是创建代理。但是,如果我取消选择“重用所有引用”选项,则会创建代理:尽管这会严重破坏我的代码,但我需要在整个代码中共享对 MyLibrary 的引用。

在做了一些挖掘之后,我尝试使用 svcutil 创建引用:

svcutil/t:code http://localhost/MyService/r MyLibrary.dll

抛出错误:

Attempting to download metadata from 'http://localhost/MyService' using WS-Metadata Exchange or DISCO. Error: Cannot import wsdl:portType Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter    
Error: Referenced type 'MyLibrary.MyClass, MyLibrary, Version=2.0.53
33.26816, Culture=neutral, PublicKeyToken=null' with data contract name 'MyLibrary.MyClass' in namespace 'http://schemas.datacontract.org/2004/07/MyService' cannot be used since it does not match imported DataContract. Need to exclude this type from referenced types.    
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IService']

我不知道哪里出了问题;我看过关于此错误的其他帖子,但他们都提到确保引用的类相同 - WCF 应用程序在 MyLibrary 中使用相同的代码,因为我正在调用 svcutil 上面;两者都在同时编译。此外,我没有做任何我以前没有做过几十次的不同的事情。

谁能建议从哪里开始解决这个问题?如果我在混淆过程中破坏了我的代码示例中的任何语法,请提前致歉:)

最佳答案

我无意中发现了答案:如果我取消选中“始终生成消息契约(Contract)”选项,然后取消选中“更新服务引用”,一切都会恢复正常。

image

我确定我真的应该使用 DataContract(如我的 OP 的评论中所述),但我会快速获胜,改天隐藏我的无知!

关于c# - WCF 服务引用 - 重用类型时未生成代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25207343/

相关文章:

c# - Unity 检查器中不再显示具有动态参数的 UnityEvent

c# - Xamarin 需要作为 commandParameter 从同一 xaml 的元素中选择项目

c# - 未初始化的浮点变量,重新定义不确定的行为

javascript - 如何在等待长时间 WCF 服务调用时在 asp 文本框上显示消息

wcf - 使用 WP7 使用 WCF Rest 服务

c# - 具有范围的 Asp.net 核心 2.1 OpenIdConnectOptions 不起作用

c# - 在 PInvoke 中管理大量 3rdparty 依赖项以获得更好的编译速度

c# - 不聚焦,但允许互动?

.net - 他们使用什么技术?

xml - RESTFUL WCF 删除所有 xmlns