gpt4 book ai didi

c# - MessageContract - 无效的方法生成

转载 作者:行者123 更新时间:2023-11-30 12:11:04 24 4
gpt4 key购买 nike

我有以下 wcf 服务:

[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; }
}

然而,当我通过添加服务引用生成 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 标记如下:

  1. 在 MessageHeader 成员上使用 [MessageHeader] 属性就足够了。
  2. 如果契约(Contract) TestsResults 不是顶级契约(Contract),我会将其标记为仅具有 DataMember 属性的 DataContract。

编辑:3. TestResult也应该是一个DataContract,所有成员都标有DataMember。您的枚举必须用 EnumMember 属性标记。

希望对您有所帮助。

关于c# - MessageContract - 无效的方法生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16237430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com