我正在編程一個Azure WCF應用程序。序列化時發生WCF回調錯誤
一個datacontract定義如下:
[DataContract]
public class UserInfo
{
[DataMember]
public string UserName { get; set; }
[DataMember]
public int UserID { get; set; }
[DataMember]
public bool IsOnline { get; set; }
}
然後我在WCF服務定義datacontract:
[DataContract(Name="UserInfo")]
public class ServiceUserInfo : UserInfo
{
[IgnoreDataMember]
public ICallback Callback { get; set; }
}
然後,它會回調到客戶端,該方法如下
private void NoticeUsers(UserInfo currentuser)
{
var users = UserManager.GetAllActiveUsers();
foreach (var user in users)
{
if (user.UserName == currentuser.UserName)
continue;
user.Callback.UpdateUserList(currentuser);
}
}
其實我將一個ServiceUserInfo對象作爲參數傳遞給NoticeUsers方法。然後會發生如下錯誤:
嘗試序列化參數http://tempuri.org/:user時發生錯誤。 InnerException消息是'類型'WCFServiceWebRole.ServiceUserInfo',數據協定名稱'UserInfo:http://schemas.datacontract.org/2004/07/WCFServiceWebRole'不是預期的。考慮使用DataContractResolver或將任何不知道的類型靜態添加到已知類型列表中 - 例如,通過使用KnownTypeAttribute屬性或將它們添加到傳遞給DataContractSerializer的已知類型列表中。有關更多詳細信息,請參閱InnerException。
我無法找到此問題的解決方案。請幫助。