//*******************************
using System;
using System.Collections;
using Microsoft.Data.Odbc;
namespace JDEFoundationInterface
{
/// <summary>
/// dsF0010Container 的摘要说明。
/// </summary>
public class dsF0010Container
{
private dsF0010[] mdsF0010s;
public dsF0010Container(string SQL)
{
//
// TODO: 在此处添加构造函数逻辑
//
// 建立数据库连接,执行SQL语句,获得DataReader
OdbcConnection conn = null;
conn=DBConnection.GetConnection();
OdbcCommand cmd = new OdbcCommand(SQL);
cmd.Connection = conn;
conn.Open();
OdbcDataReader reader = cmd.ExecuteReader();
//将DataReader中的数据实例化DataStructure,并放入ArrayList
ArrayList list=new ArrayList();
while (reader.Read())
{
list.Add(new dsF0010(reader));
}
//关闭数据库连接
reader.Close();
conn.Close();
//获得将ArrayList中的Object个数,定义数组大小,并给数组赋初值。
dsF0010[] temp_dsF0010s = new dsF0010[list.Count];
int i=0;
foreach(object obj in list)
{
temp_dsF0010s[i]=(dsF0010)obj;
i++;
}
mdsF0010s=temp_dsF0010s;
} public dsF0010[] dsF0010s
{
get
{
return mdsF0010s;
}
}
}
}
using System;
using System.Collections;
using Microsoft.Data.Odbc;
namespace JDEFoundationInterface
{
/// <summary>
/// dsF0010Container 的摘要说明。
/// </summary>
public class dsF0010Container
{
private dsF0010[] mdsF0010s;
public dsF0010Container(string SQL)
{
//
// TODO: 在此处添加构造函数逻辑
//
// 建立数据库连接,执行SQL语句,获得DataReader
OdbcConnection conn = null;
conn=DBConnection.GetConnection();
OdbcCommand cmd = new OdbcCommand(SQL);
cmd.Connection = conn;
conn.Open();
OdbcDataReader reader = cmd.ExecuteReader();
//将DataReader中的数据实例化DataStructure,并放入ArrayList
ArrayList list=new ArrayList();
while (reader.Read())
{
list.Add(new dsF0010(reader));
}
//关闭数据库连接
reader.Close();
conn.Close();
//获得将ArrayList中的Object个数,定义数组大小,并给数组赋初值。
dsF0010[] temp_dsF0010s = new dsF0010[list.Count];
int i=0;
foreach(object obj in list)
{
temp_dsF0010s[i]=(dsF0010)obj;
i++;
}
mdsF0010s=temp_dsF0010s;
} public dsF0010[] dsF0010s
{
get
{
return mdsF0010s;
}
}
}
}
using System;
using Microsoft.Data.Odbc;
using System.Collections;
namespace JDEFoundationInterface
{
/// <summary>
/// mainInterface 的摘要说明。
/// </summary>
public class mainInterface
{
public static dsF0010[] GetCompany(string[] cos)
{
//生成查询SQL语句
string SQL = "SELECT * FROM F0010";
dsF0010Container container = new dsF0010Container(SQL);
return container.dsF0010s;
}
}
}//***********************************
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using JDEFoundationInterface;
namespace WebService1
{
/// <summary>
/// Service1 的摘要说明。
/// </summary>
///
[WebService(Namespace="http://xnm/WebService1/",
Description="A temperature conversion service.")] public class Service1 : System.Web.Services.WebService
{
public Service1()
{
//CODEGEN:该调用是 ASP.NET Web 服务设计器所必需的
InitializeComponent();
} #region Component Designer generated code
//Web 服务设计器所必需的
private IContainer components = null;
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
} /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if(disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion // WEB 服务示例
// HelloWorld() 示例服务返回字符串 Hello World
// 若要生成,请取消注释下列行,然后保存并生成项目
// 若要测试此 Web 服务,请按 F5 键 [WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod]
public string HelloWorld2()
{
return "Hello World2";
}
[WebMethod]
public JDEFoundationInterface.dsF0010[] getF0010()
{
return JDEFoundationInterface.mainInterface.GetCompany(null);
}
}
}打开web service的页面的时候 措无提示如下:
“/WebService1”应用程序中的服务器错误。
--------------------------------------------------------------------------------JDEFoundationInterface.dsF0010 无法序列化,因为它不具有默认的公共构造函数。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: JDEFoundationInterface.dsF0010 无法序列化,因为它不具有默认的公共构造函数。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 堆栈跟踪:
[InvalidOperationException: JDEFoundationInterface.dsF0010 无法序列化,因为它不具有默认的公共构造函数。]
System.Xml.Serialization.TypeScope.ImportTypeDesc(Type type, Boolean canBePrimitive, Boolean throwOnNoDefaultCtor, MemberInfo memberInfo) +2134
System.Xml.Serialization.TypeScope.GetTypeDesc(Type type, MemberInfo source, Boolean throwOnDefaultCtor) +56
System.Xml.Serialization.TypeScope.ImportTypeDesc(Type type, Boolean canBePrimitive, Boolean throwOnNoDefaultCtor, MemberInfo memberInfo) +1386
System.Xml.Serialization.TypeScope.GetTypeDesc(Type type, MemberInfo source, Boolean throwOnDefaultCtor) +56
System.Xml.Serialization.XmlReflectionImporter.ImportMemberMapping(XmlReflectionMember xmlReflectionMember, String ns, XmlReflectionMember[] xmlReflectionMembers) +36
System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(XmlReflectionMember[] xmlReflectionMembers, String ns, Boolean hasWrapperElement) +300[InvalidOperationException: 反射“getF0010Result”时出错。]
System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(XmlReflectionMember[] xmlReflectionMembers, String ns, Boolean hasWrapperElement) +607
System.Xml.Serialization.XmlReflectionImporter.ImportMembersMapping(String elementName, String ns, XmlReflectionMember[] members, Boolean hasWrapperElement) +108
System.Web.Services.Protocols.SoapReflector.ImportMembersMapping(XmlReflectionImporter xmlImporter, SoapReflectionImporter soapImporter, Boolean serviceDefaultIsEncoded, Boolean rpc, SoapBindingUse use, SoapParameterStyle paramStyle, String elementName, String elementNamespace, Boolean nsIsDefault, XmlReflectionMember[] members, Boolean validate) +169
System.Web.Services.Protocols.SoapReflector.ReflectMethod(LogicalMethodInfo methodInfo, Boolean client, XmlReflectionImporter xmlImporter, SoapReflectionImporter soapImporter, String defaultNs) +2671[InvalidOperationException: 无法反射方法 Service1.getF0010。]
System.Web.Services.Protocols.SoapReflector.ReflectMethod(LogicalMethodInfo methodInfo, Boolean client, XmlReflectionImporter xmlImporter, SoapReflectionImporter soapImporter, String defaultNs) +5390
System.Web.Services.Description.SoapProtocolReflector.ReflectMethod() +43
System.Web.Services.Description.ProtocolReflector.ReflectBinding(ReflectedBinding reflectedBinding) +1015
System.Web.Services.Description.ProtocolReflector.Reflect() +506
System.Web.Services.Description.ServiceDescriptionReflector.Reflect(Type type, String url) +530
System.Web.Services.Protocols.DocumentationServerType..ctor(Type type, String uri) +156
System.Web.Services.Protocols.DocumentationServerProtocol.Initialize() +273
System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing) +106[InvalidOperationException: 无法处理请求。]
System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing) +204
System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response) +82[InvalidOperationException: 未能处理请求。]
System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response) +154
System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, String filePath) +34
System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, String path, String pathTranslated, Boolean useAppConfig) +174
System.Web.MapHandlerExecutionStep.Execute() +77
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +173 该问题解决后 ,另赠送100分
public System.IO.FileInfo HelloWorld1() {
return new System.IO.FileInfo("C:\\1.txt");
}这个代码就出错了,因为 fileinfo 不能做为参数传送,它无法序列化
我知道java的WebService是可以传递自定义类型的,也就是ComplexType 不过要符合一定的规范而已。