问题描述
我在webservice里写了一个返回Fileinfo[]类型的方法,可是运行的时候出现"System.IO.FileInfo无法序列化,因为它没有无参数的构造函数"这样的错误,请问是什么问题?
解决方案
解决方案二:
序列化和反序列化需要对象具有没参赛的构造函数classclassA//这样的没问题{publicclassA(){}}classclassA{publicclassA(inta){//这样的就没法序列化反序列化了,因为反序列化时.net根本不知道怎么给你传递那些构造参数}}
解决方案三:
usingSystem;usingSystem.Data;usingSystem.Web;usingSystem.Collections;usingSystem.Web.Services;usingSystem.Web.Services.Protocols;usingSystem.ComponentModel;usingSystem.Runtime.InteropServices;usingSystem.Diagnostics;usingSystem.IO;namespaceWebService1{///<summary>///Service1的摘要说明///</summary>[WebService(Namespace="http://tempuri.org/")][WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)][ToolboxItem(false)]publicclassService1:System.Web.Services.WebService{[WebMethod]publicFileInfo[]data(){DirectoryInfoSpath=newDirectoryInfo("路径");FileInfo[]Sdata=Spath.GetFiles();returnSdata;}}}代码是这样的,比较简单,就是出现那个序列化的问题,其实也没什么,就是返回服务器端的文件!如果有其它的方法也行!
解决方案四:
用一个类来替换FileInfo[]
解决方案五:
写一个可序列化的类来代替FileInfo[]参考:http://blog.csdn.net/jupiter97/archive/2007/05/31/1632448.aspx思路是:在里面定义几个数组来存FileInfo相关字段的信息,可以搜一下WebService返回DataTable