0

在我的 WCF 服务上,我只是从以下位置更改了一个枚举:

    /// <summary>
/// The DocumentState enum.
/// </summary>
[DataContract]
public enum DocumentState
{
    /// <summary>
    /// Undefined.
    /// </summary>
    [EnumMember]
    Undefined,

    /// <summary>
    /// OK.
    /// </summary>
    [EnumMember]
    Ok
}

至:

    /// <summary>
/// The DocumentState enum.
/// </summary>
[DataContract]
[Flags]
public enum DocumentState
{
    /// <summary>
    /// Undefined.
    /// </summary>
    [EnumMember]
    Undefined = 0,

    /// <summary>
    /// OK.
    /// </summary>
    [EnumMember]
    Ok = 1
}

在客户端,我更新 WCF 引用没有任何问题,但重建后我得到:

错误 5 自定义工具错误:无法为服务引用“MyService”生成代码。请查看其他错误和警告消息以获取详细信息

这个标志枚举有什么问题?

更新:

好的..在警告中我发现了这个,但这并没有真正帮助我:

警告 1 自定义工具警告:无法导入 wsdl:portType 详细信息:运行 WSDL 导入扩展时引发异常:System.ServiceModel.Description.DataContractSerializerMessageContractImporter 错误:引用类型“TestSolution.Test.Entities.Documents.Document,TestSolution.Test。实体,版本 = 1.1.78.7965,文化 = 中性,PublicKeyToken = 7ad0fddf5c57b9b3',命名空间“http://schemas.datacontract.org/2004/07/TestSolution.Test.Entities.Documents”中的数据合同名称“文档”不能使用,因为它与导入的 DataContract 不匹配。需要从引用类型中排除此类型。

错误源的 XPath://wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IDocumentService'] c:\TFS1\TestSolution - Test\Test\Test。 Core\Service References\DocumentService\Reference.svcmap 1 1 Test.Core 警告 2 自定义工具警告:无法导入 wsdl:binding 详细信息:导入 wsdl:binding 所依赖的 wsdl:portType 时出错。

wsdl:portType 的 XPath://wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:portType[@name='IDocumentService'] 错误源的 XPath://wsdl:definitions[@ targetNamespace='http://tempuri.org/']/wsdl:binding[@name='NetTcpEndpoint'] c:\TFS1\TestSolution - Test\Test\Test.Core\Service References\DocumentService\Reference.svcmap 1 1 Test.Core 警告 3 自定义工具警告:无法导入 wsdl:port

详细信息:导入 wsdl:port 所依赖的 wsdl:binding 时出错。wsdl:binding 的 XPath: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='NetTcpEndpoint'] 错误源的 XPath: //wsdl:definitions[@ targetNamespace='http://tempuri.org/']/wsdl:service[@name='DocumentService']/wsdl:port[@name='NetTcpEndpoint'] c:\TFS1\TestSolution - Test\Test\Test。 Core\Service References\DocumentService\Reference.svcmap 1 1 Test.Core 错误 4 自定义工具错误:无法为服务引用“DocumentService”生成代码。有关详细信息,请查看其他错误和警告消息。c:\TFS1\TestSolution - Test\Test\Test.Core\Service References\DocumentService\Reference.svcmap 1 1 Test.Core

4

1 回答 1

0

添加Flag属性时,您更改了 Enum 的存储方式,并使该类型的变量能够保存多个值。此MSDN 帖子解释了有关 WCF 如何处理此问题的详细信息。除非您实际上打算将该 Enum 用作标志字段,否则我会摆脱它,因为它不必要地使 Enum 含义复杂化。

于 2012-08-28T20:32:43.503 回答