我有以下WCF服务:MessageContract - 无效的方法产生
[ServiceContract]
public interface IUnitTestingService
{
[OperationContract]
TestsResult ExecuteUnitTests(UploadRequest unitTestsExecutionData);
}
// Use a data contract as illustrated in the sample below to add composite types to service operations.
public class TestResult
{
public enum TestRunResult
{
Passed=1,
Failed=2,
Exception=3
}
public string TestName { get; set; }
public string StartTime { get; set; }
public string EndTime { get; set; }
public string Result { get; set; }
}
[MessageContract(WrapperName = "TestResult"), DataContract]
public class TestsResult
{
[MessageHeader, DataMember]
public List<TestResult> Results { get; set; }
[MessageHeader, DataMember]
public int TotalExecutedTests { get; set; }
[MessageHeader, DataMember]
public int TotalPassedTests { get; set; }
[MessageHeader]
public int TotalFailedTests { get; set; }
}
[MessageContract]
public class UploadRequest
{
[MessageHeader(MustUnderstand = true)]
public UnitTestingFrameworkType UnitTestingFrameworkType { get; set; }
[MessageBodyMember(Order = 1)]
public Stream Stream { get; set; }
}
但是当我通过附加服务REFFERENCE生成WCF客户端类我得到这个:
public UTS.ServiceReference1.TestResult[] ExecuteUnitTests(UTS.ServiceReference1.UnitTestingFrameworkType UnitTestingFrameworkType, System.IO.Stream Stream, out int TotalExecutedTests, out int TotalFailedTests, out int TotalPassedTests)
,而不是这样的:
TestsResult ExecuteUnitTests(UploadRequest unitTestsExecutionData);
为什么?
感谢您的建议。我通过使messageContract包含一个包含所有必需字段的复杂类型来解决我的问题。这是允许的 - 我认为这不是 – seeker 2013-04-26 15:32:48
我很高兴我的意见帮助你找出解决方案! – gabnaim 2013-04-26 15:37:25