2014-04-24 40 views
0

我有一個實現數據契約的WCF服務。然後,我有一個客戶端使用它自己實現的數據合約來使用該服務。數據契約不匹配不會導致WCF中的錯誤

如果數據契約不完全匹配,它不會產生任何類型的錯誤,也不會返回任何數據。

public class RecipeClient : ClientBase<IRecipeService>, IRecipeService 
{ 
    public RecipeEntity[] GetAllRecipes() 
    { 
     var recipe = Channel.GetAllRecipes(); 
     return recipe; 
    } 
} 

在上面的示例中,在調用之後,recipe包含一個空的RecipeEntity數組。

我希望它不返回任何數據,但爲什麼它不會產生錯誤?

回答

1

它是爲了向後兼容。如果您在現有服務的數據合同中添加了一些不需要的屬性,則所有現有客戶端都可以正常工作。

1

好像被提到它是爲了向後兼容,但可以根據需要標記一些屬性。如果消息中沒有這種屬性,則會拋出異常:

[DataContract] 
public class Recipe 
{ 
    [DataMember] 
    public string Name { get; set; } 
    [DataMember(IsRequired = true)] 
    public string Rank { get; set; } 
} 
相關問題