我正在将asmx Web服务升级到WCF。 asmx wsdl公开了客户端所需的某些类。这些类不在Web方法本身中引用,但它们是Web方法中的类中的引用。例如:
WebMethod1(Class1 param)
{
return Class 2;
}
Class1和Class 2包含在wsdl中,但是在Class1或Class 2中引用的任何类都不包含在WCF的WSDL中。但是,它们位于asmx WSDL中。
有没有办法在不更改类本身或Web服务中的代码的情况下公开这些必需的类?我知道你可以将[DataContract]等添加到类中,但我发现很难相信WCF在这方面不应该提供与asmx相同的功能。
由于
答案 0 :(得分:3)
不要求DataContract不是asmx的强大功能,或者要求DataContract不是WCF的弱点。这是WCF的设计,原因很多,其中之一就是你应该向外界发布最少的信息。对于大型Web服务项目,这是一种祝福,而不是限制。客户不希望看到您的服务类的详细信息。
服务数据类是通过WSDL发布的,只有在满足这些条件时才能成为客户端的代理类: