【发布时间】: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