当我调用我的WCF服务时,我收到了下面提到的错误?我如何摆脱它?
尝试序列化参数http://tempuri.org/:MyWCFSvc.svc时出错。InnerException消息为“”Type“”System.String[]“”,不应具有数据协定名称“”ArrayOfstring:http://schemas.microsoft.com/2003/10/Serialization/Arrays“”。“静态地将任何未知类型添加到已知类型列表中-例如,通过使用KnownTypeAttribute属性或通过将它们添加到传递给DataContractSerializer的已知类型列表。更多详情请查看InnerException。*
我尝试在我的WCF服务接口中使用[ServiceKnownType(typeof(string[])]),但是没有成功
发布于 2010-02-17 05:11:23
晚了一年,但我也遇到了同样的问题,下面是你需要做的
List<SomeClass> mylist = new List<SomeClass>();
DataContractSerializer dcs = new DataContractSerializer(mylist.GetType());
XmlWriter writer = XmlWriter.Create(sb, XWS);
dcs.WriteObject(writer, query);
writer.Close();问题是,当你用类的类型构造序列化程序时,序列化程序不会把它看作一个数组,它只会看到一个对象。
如果通过先执行以下操作找到它:
DataContractSerializer dcs = new DataContractSerializer(SomeClass.GetType());
XmlWriter writer = XmlWriter.Create(sb, XWS);
dcs.WriteObject(writer, query[0]); // Only get the first record from linq to sql
writer.Close();发布于 2012-12-04 22:06:49
我也有同样的问题,但在用[ServiceKnownType(typeof(string[]))]和[ServiceKnownType(typeof(int[]))]验证了OperationContract之后,解决了这个问题。
例如:
[ServiceContract]
public interface IReportService
{
[OperationContract]
[ServiceKnownType(typeof(string[]))]
[ServiceKnownType(typeof(int[]))]
bool GenerateReport(int clientId, int masterId, string reportType, int[] vtIds, DateTime initialDate, DateTime finalDate,
bool descending, string userName, string timeZoneId, bool embedMap,
object[] vtExtraParameters, object[] vtScheduleParameters, string selectedCriteria,
out long reportID, out int scheduleID, out string message);发布于 2009-03-30 01:44:08
没有理由必须对字符串数组执行KnownType操作。序列化程序应该已经知道这一点,并且数组不是问题。我在WCF中移动东西的列表没有问题。你能发布一个你正在做的有代表性的样本吗?
https://stackoverflow.com/questions/695755
复制相似问题