WCF更新服务引用不会添加新属性

时间:2017-06-21 11:55:31

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

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

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

但是现在Update-Process没有为WCF服务创建正确的代理。 当我添加一些DTO对象时,信息会将新DTO更新正确地更新到客户端,但是当我向现有DTO对象添加一些Propertys时,Update-Servicereference Function不包含新的Propertys。 我已经尝试创建一个全新的应用程序并在此Test-Scenario中添加Service-Reference,但在这种情况下,新属性不会出现在代理类中。

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

但是现在我尝试将Propertys添加到类DeviceStayType和ProcessStateType中并且具有相同的行为。没有显示错误,Git说当我按下更新服务引用时代理发生了变化,但客户端仍然缺少属性。

以下是一些片段:

旧的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 {
}

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

1 个答案:

答案 0 :(得分:0)

行。经过一些测试后,我决定将模型外包给DLL,这两个项目(后端和前端)都有参考。 看来这是解决这个问题的唯一方法。我认为当theree是两个web服务时会产生这种行为;一个在前端作为Callback(流式传输,因为它有更好的性能)和一个在后端作为Managing-Service。两个服务使用相同的类,我认为这可能是一个可能的原因,因为后端服务将模型发送到前端客户端,前端服务也将模型发送到后端客户端。 现在有了外包课程和更轻松的转换,这个场景适用于我的情况。