【问题标题】:WCF Updating Service References doesnt add new propertysWCF 更新服务引用不添加新属性
【发布时间】:2017-06-21 11:55:31
【问题描述】:

我创建了一个后端服务(Windows 服务),它通过 WCF 向我的网络客户端提供数据,处理与数据库的连接和一些特定任务。

每次更改我的 DTO 对象中的某些内容时,当我更新服务引用时,更改都会在客户端正确进行。

但现在更新进程没有为 WCF 服务创建正确的代理。 当我添加一些 DTO 对象时,有关新 DTO 的信息已正确更新到客户端,但是当我向现有 DTO 对象添加一些属性时,更新服务引用函数不包括新属性。 我已经尝试创建一个全新的应用程序并在此测试场景中添加服务引用,但在这种情况下,新属性不会出现在代理类中。

我第一次注意到这种行为是因为我尝试在“File.cs”DTO 中创建一个新属性。我认为创建此错误的名称“文件”(类定义具有相同的名称)。所以我决定将“文件”DTO-Class 重命名为 AttachmentFile,并在代理上正确创建新属性。

但现在我尝试将属性添加到类 DeviceStayType 和 ProcessStateType 并且存在相同的行为。没有显示错误,Git 说当我按下 Update Service-References 时代理已更改,但客户端仍然缺少属性。

这里有一些sn-ps:

旧的 DeviceStayType-Class:

    [DataContract]
public class DeviceStayType : TypesBase
{
}

新的 DeviceStayType-Class:

    [DataContract]
public class DeviceStayType : TypesBase
{
    [DataMember(Name = "TableName")]
    [MaxLength(200)]
    public string TableName { get; set; }
}

为 DeviceStayType 生成的代理

[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="DeviceStayType", Namespace="http://schemas.datacontract.org/2004/07/ProductLifecycle.Backend.Models.DTO")]
[System.SerializableAttribute()]
public partial class DeviceStayType : ProductLifecycle.Frontend.CommunicationService.TypesBase {
}

希望任何人都可以提供帮助:( 谢谢, 迈克尔

【问题讨论】:

  • 删除并重新创建服务引用
  • 这是我第一次尝试解决这个问题。我有多难过:如果我创建一个全新的应用程序并将引用添加到同一服务,那么这些属性也会丢失。只有当我创建新的 DTO 类时,MEX 才会将新对象交付给客户端

标签: c# web-services wcf visual-studio-2015


【解决方案1】:

好的。经过一些测试后,我决定将模型外包给两个项目(后端和前端)都有参考的 DLL。 似乎这是解决此问题的唯一方法。我认为当有两个网络服务时会产生这种行为;一个在前端作为回调(流式传输,因为性能要好得多),一个在后端作为管理服务。两个服务都使用相同的类,我认为这可能是一个可能的原因,因为后端服务将模型发送到前端客户端,前端服务也将模型发送到后端客户端。 现在有了外包类和更轻松的转换,该场景适用于我的情况。

【讨论】:

    猜你喜欢
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多