最近我在 WCF 序列化中遇到了一个奇怪的行为。
它是一个简单的服务,它公开一个操作契约并返回一个类的对象(这个类没有用 [Serializable] 或 [DataContract] 属性修饰。
但是,当我从客户端调用此操作时,它可以完美运行,并且消费者会收到该类的对象(其中包含实际数据)。
据我认为它不应该通过电线传递,因为它不能被序列化,如果我遗漏了什么,请告诉我。
代码示例
public class MyService:IService
{
public Person GetPerson()
{
Person person = new Person();
person.Name = "Brian";
return person;
}
}
public class Person
{
public string Name { get; set; }
}
<services>
<service name="MyService">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/MyService"/>
</baseAddresses>
</host>
<endpoint address="TestService1"
binding="basicHttpBinding"
contract="BindingTestServer.IService" ></endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>