Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
序列化时发生WCF回调错误_Wcf_Callback_Datacontract - Fatal编程技术网

序列化时发生WCF回调错误

序列化时发生WCF回调错误,wcf,callback,datacontract,Wcf,Callback,Datacontract,我正在编写Azure WCF应用程序 定义如下的数据契约: [DataContract] 公共类用户信息 { [数据成员] 公共字符串用户名{get;set;} [数据成员] public int UserID{get;set;} [数据成员] 公共bool IsOnline{get;set;} } 然后在我的WCF服务中定义一个datacontract: [DataContract(Name=“UserInfo”)] 公共类服务UserInfo:UserInfo { [IgnoreDataMe

我正在编写Azure WCF应用程序

定义如下的数据契约:
[DataContract]
公共类用户信息
{
[数据成员]
公共字符串用户名{get;set;}
[数据成员]
public int UserID{get;set;}
[数据成员]
公共bool IsOnline{get;set;}
}

然后在我的WCF服务中定义一个datacontract:

[DataContract(Name=“UserInfo”)]
公共类服务UserInfo:UserInfo
{
[IgnoreDataMember]
公共ICallback回调{get;set;}
}

然后在服务合同中,它将回调到客户端,方法如下

private void noticeuser(UserInfo currentuser)
{
var users=UserManager.GetAllActiveUsers();
foreach(用户中的var用户)
{
如果(user.UserName==currentuser.UserName)
继续;
user.Callback.UpdateUserList(当前用户);
}
}

实际上,我将ServiceUserInfo对象作为参数传递给NoticeUsers方法。然后会出现如下错误:

尝试序列化参数时出错。InnerException消息为“Type”WCFServiceWebRole.ServiceUserInfo,数据协定名称为“UserInfo:http://schemas.datacontract.org/2004/07/WCFServiceWebRole”他说。考虑使用DATACONTRORTCORDEVER或将未知类型的任何类型添加到已知类型的列表中——例如,通过使用NoNyType属性,或者将它们添加到传递给DATACONTROTTRORALIZER的已知类型列表中。有关更多详细信息,请参阅InnerException


我无法找到此问题的解决方案。请帮助。

我想我已经找到了问题的根本原因,但我不知道为什么

该问题是由服务契约的Namespace属性引起的

我没有设置我的服务契约接口和数据契约接口的名称空间。我想它会被默认设置,不会引起任何问题。但实际上,这个线程的问题是由Namespace属性引起的。我为服务契约和数据契约设置了一个名称空间属性,当然是同一个名称空间,然后它就工作了。这个问题再也不会发生了

但是,我不知道为什么会出现这个问题。如果我不设置名称空间,它将是默认值“”,不是吗