Wcf对象类型
问题描述:
尝试在具有相同代码库的两个系统之间发送复杂类型。他们都知道与数据传输介质相同的对象。但是,当我在消费者代理上传递对象时,它在Web服务名称空间中显示为对象而不是应用程序中的对象。Wcf对象类型
有无论如何,我可以定义使用内部对象?
[WebMethod]
public void Run(TransportObject transport)
出现在我的应用程序MyNamespace.Webservice.Transport
,而不是MyNamespace.Objects
答
正如亨克所说,WCF中的类型共享是默认行为。
我将有资格通过扩大它并演示了如何实现它:
因此而不是让Visual Studio中为你生成一个服务引用,你可以有WCF创建代理时,执行由使用的ChannelFactory。
例如:
// Create service proxy on the fly
var factory = new ChannelFactory<IMyServiceContract>("NameOfMyClientEndpointInConfigFile");
var proxy = factory.CreateChannel();
// Create data contract
var requestDataContract = new MyRequestType();
// Call service operation.
MyResponseType responseDataContract = proxy.MyServiceOperation(requestDataContract);
在上面的例子中,IMyServiceContract
是您的服务合同,并0和MyResponseType
是数据的合同,您可以通过引用该服务还引用(它定义了组件使用这些类型)。
答
[WebMethod]
意味着它是一个基于ASMX服务,而不是一个WCF服务下...
在[ServiceContract]
[OperationContract]
再试一次
在WCF*享类型是可能的,我认为它甚至是默认行为。
+0
@marc_s - 是的,你是对的。我会编辑。 – 2012-03-19 11:47:28
'[WebMethod]'不是WCF - 它是ASMX。 – 2013-01-10 06:44:35