开发者

Make an interface structure appear in a WSDL

开发者 https://www.devze.com 2022-12-10 04:05 出处:网络
I\'ve exposed a method on a web service to return an interface and sending back conrete classes using the [ServiceKnownType] attribute which works very well.

I've exposed a method on a web service to return an interface and sending back conrete classes using the [ServiceKnownType] attribute which works very well.

However, the wsdl description does not display any of its properties or any xml structure for this interface, this is the same when i send back List it gives it a default type of 'ArrayOfAny'. What I would like to do is replace this 'ArrayOfAny' XML structure in the WSDL with the structure of the known servicetype.

I know there is an interface 'IWsdlExportExtension' that can be implemented to get access to the wsdl creation and having done this i haven't a clue what to do next?

What process would i have to perform to make the WSDL 'output 开发者_开发知识库message' xml node have the xml structure of the conrete class that I'm actually sending back?

So basically, I just want to modify the wsdl input_message xml node with some custom content?

Any ideas?


You cannot do this. The Service oriented world and with it WCF is built on XML schema, and you can only send concrete types across the wire. Remember - all that goes between the client and the server is a serialized message - there's no passing of references or anything - and only concrete classes can be serialized into a message.

What you can do (to a certain degree) is define a base class and then use the [KnownType] attribute to declare that other descendants might also be received and/or returned by a given operation.

Your only hope would be the NetDataContractSerializer, which you could use, if you control both ends of the communication channel (i.e. .NET-to-.NET WCF).

Check out these articles about that:

  • WCF Serializers
  • WCF's NetDataContractSerializer

The NetDataContractSerializer packs .NET type information into your serialized message, thus enabling some whacky scenarios that a regular, interoperable service implementation can't handle.

UPDATE: - ok, I probably didn't quite get the gist of your question - does this article here A Sample IWsdlExportExtension for WCF help you maybe?

0

精彩评论

暂无评论...
验证码 换一张
取 消