.net 将复合类型获取到WSDL中,即使它不在服务接口中
我定义了一个简单的DTO,使用Datacontract和Datamember属性,所有Datamember都是整数。我正在返回一份工作正常的清单。但现在我压缩列表并返回字节数组。既然我的服务不再返回DTO作为其接口的一部分,它就不会在服务引用中生成类。我不能解压缩它,因为我没有类型的工作在客户端 我正在使用VisualStudio生成服务引用 所有的例子似乎都是关于公开一个已知类型,其中一个类有另一个类作为其属性之一。所以他们先声明一个类型,然后声明一个已知的类型,或者使用继承等等。我只想声明这个类型 我试过很多东西,包括.net 将复合类型获取到WSDL中,即使它不在服务接口中,.net,vb.net,visual-studio-2010,wcf,.net,Vb.net,Visual Studio 2010,Wcf,我定义了一个简单的DTO,使用Datacontract和Datamember属性,所有Datamember都是整数。我正在返回一份工作正常的清单。但现在我压缩列表并返回字节数组。既然我的服务不再返回DTO作为其接口的一部分,它就不会在服务引用中生成类。我不能解压缩它,因为我没有类型的工作在客户端 我正在使用VisualStudio生成服务引用 所有的例子似乎都是关于公开一个已知类型,其中一个类有另一个类作为其属性之一。所以他们先声明一个类型,然后声明一个已知的类型,或者使用继承等等。我只想声明这
<dataContractSerializer>
<declaredTypes>
<add type="PGF.Business.CustomerCropYearDTO, PGF_ExternalService">
</add>
</declaredTypes>
</dataContractSerializer>
这里是这个类的缩写版本
<DataContract()>
Public Class CustomerCropYearDTO
<DataMember()> Public Property CustomerCropYearId As Integer
End Class
公共类CustomerCropYearDTO
公共属性CustomerCropyerId为整数
末级
我在VB中工作,但C#答案就可以了。嗯。。如果我理解得很好,您将DTO更改为包含二进制文件,现在您正试图在服务调用之前处理对象实例化期间的压缩。我说得对吗
Gzip压缩可以在消息级别处理。您可以尝试使用“真实属性”(而不是字节数组)保持数据契约,并使用Gzip压缩创建自定义绑定。有一个很好的WCF示例(导航到“WCF/Extensibility/MessageEncoder/Compression/CS”)。我将服务接口从返回DTO更改为返回字节数组。现在WCF并不“知道”DTO正在返回给客户端。所以它不会在代理中生成它。