2017-06-21 80 views
0

我創建了一個後端服務(Windows服務),它通過WCF向我的網絡客戶端提供數據,處理到數據庫的連接以及一些特定任務。WCF更新服務引用不添加新屬性

每次在我的DTO對象中更改某些內容時,我在更新服務引用時都會在客戶端正確進行更改。

但是現在Update-Process不會爲WCF服務創建正確的代理。 當我添加一些DTO對象時,這些信息會將新的DTO正確更新到客戶端,但是當我向現有的DTO對象添加一些屬性時,Update-ServiceReference函數不包括新的屬性。 我已經嘗試創建一個全新的應用程序,並在此測試場景中添加Service-Reference,但在這種情況下,新屬性也不會出現在代理類中。

第一次我注意到這種行爲是因爲我嘗試在我的「File.cs」DTO中創建一個新屬性。我認爲創建這個錯誤的名稱爲「文件」(類定義具有相同的名稱)。所以我決定將「File」DTO-Class重命名爲AttachmentFile,並在代理上正確創建新屬性。

但現在我嘗試添加屬性到類DeviceStayType和ProcessStateType和theres相同的行爲。沒有錯誤顯示和Git說,當我按更新服務引用但代理仍在客戶端丟失時,代理已更改。

下面是一些片段:

老DeviceStayType級:

[DataContract] 
public class DeviceStayType : TypesBase 
{ 
} 

新DeviceStayType級:

[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 { 
} 

希望任何人都可以幫忙:( 謝謝, 邁克爾

+0

再次刪除並重新創建服務參考 – Rahul

+0

這是我的第一個解決此問題的工具之一。我很傷心:如果我創建一個全新的應用程序,並將該引用添加到相同的服務中,這些屬性也會丟失。只有當我創建新的DTO類時,MEX纔會將新對象交付給客戶端 – Michael

回答

0

好的。經過一些測試後,我決定將這些模型外包給一個DLL,這兩個項目(後端和前端)都有參考。 看來這是解決這個問題的唯一方法。我認爲這個行爲是在theree是兩個webservices時產生的;其中一個位於前端Callback(流式因爲性能更好),另一個位於後端,作爲Managing-Service。兩種服務都使用相同的類,我認爲這可能是一個可能的原因,因爲後端服務將模型發送給前端客戶端,而前端服務也將模型發送到後端客戶端。 現在,外包課程和更輕的轉換情況在我的案例中起作用。