为WCF添加服务引用选项不向代理类添加所有内容

时间:2013-10-31 14:35:14

标签: c# wcf visual-studio svcutil.exe

所以我有一个我继承的项目,它有一个WCF服务参考和相应的Reference.cs生成的代理类。在 现有 代理类中,我可以看到enum定义:

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="MyRecord.ColorAction", Namespace="http://schemas.datacontract.org/2004/07/DocumentsDataAccess.DataClasses")]
public enum ColorAction : int {

    [System.Runtime.Serialization.EnumMemberAttribute()]
    NONE = 0,

    [System.Runtime.Serialization.EnumMemberAttribute()]
    GREEN = 1,

    [System.Runtime.Serialization.EnumMemberAttribute()]
    RED = 2,

}

以下是相应的WCF代码:

[DataContract]
public enum ColorAction
{
    [EnumMember]
    NONE = 0,
    [EnumMember]
    GREEN = 1,
    [EnumMember]
    RED = 2,
}

我可以通过在浏览器中查看wsdl来验证这是暴露的,我可以看到列出的enum类型。

但是,当我“刷新”或“添加服务引用”(通过删除和重新添加作为新引用)时,此enum以及许多其他方法和枚举缺失。下载和创建代理类是成功的,因此它不是错误的问题。

我尝试调整Add Service Reference对话框中的所有“高级”设置,但似乎没有任何区别。最终结果是,由于现有代码期望能够调用和使用enums以及其他缺少的代码,因此在刷新或重新添加服务引用后代码将无法编译。

我已经尝试取消选中Reuse types in all referenced assemblies,但这并没有改变结果。

我想知道,创建我正在查看而不是的代理类的原始人是否使用Add Service Reference向导并直接使用SvcUtil.exe代替?我之前已经使用过它,但是想知道我需要使用什么才能生成 WCF服务所暴露的一切?我需要哪些交换机才能获得服务必须公开提供的一切? (仅供参考,我的目标是.NET 4.0)。

1 个答案:

答案 0 :(得分:1)

您可以发布Enum类的托管WCF服务代码吗?

Add Service Reference可能无法创建完整的参考文件SO-SvcUtil.exe vs Add Reference。可能会使用SvcUtil.exe代替。试试看,看看是否构建了更好的代理。