AzureWCFアプリケーションをプログラミングしています。
以下のように定義されたデータ契約:
[DataContract]
public class UserInfo
{
[DataMember]
public string UserName { get; set; }
[DataMember]
public int UserID { get; set; }
[DataMember]
public bool IsOnline { get; set; }
}
次に、WCFサービスでデータコントラクトを定義します。
[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を参照してください。
この問題の解決策を見つけることができません。助けてください。