当前位置: 代码迷 >> Web Service >> System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---
  详细解决方案

System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---

热度:1014   发布时间:2011-12-08 21:33:54.0
执行存储过程(带Input,output,RetrunValue)
【功能:写一个公共的Web Services方法,可以执行返回带output/ReturnValue的存储过程。】

【代码】: //执行存储过程,带Input,output,ReturnValue
  //SqlParameter当参数传递 [ref]
  [WebMethod(Description="执行存储过程,支持Input,output,ReturnValue", EnableSession=true)]
  public bool ExecProcedure(string procedureName, ref System.Data.SqlClient.SqlParameter[] arrPars)
  {
  return MySQLHelp.ExecProcedure(procedureName, arrPars);  
  }


【错误】
System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.InvalidOperationException: 生成 XML 文档时出错。 ---> System.InvalidOperationException: 类型 System.Data.SqlTypes.SqlString 不能用在此上下文中。要将 System.Data.SqlTypes.SqlString 用作参数、返回类型或者类或结构的成员,该参数、返回类型或成员必须声明为类型 System.Data.SqlTypes.SqlString(它不能是对象)。类型 System.Data.SqlTypes.SqlString 的对象不能用在非类型化的集合如 ArrayList 中。
  在 System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(String name, String ns, Object o, Boolean xsiType)
  在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_Object(String n, String ns, Object o, Boolean isNullable, Boolean needType)
  在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write9_SqlParameter(String n, String ns, SqlParameter o, Boolean isNullable, Boolean needType)
  在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write40_ExecProcedureResponse(Object[] p)
  在 Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer61.Serialize(Object objectToSerialize, XmlSerializationWriter writer)
  在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
  --- 内部异常堆栈跟踪的结尾 ---
  在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
  在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle)
  在 System.Web.Services.Protocols.SoapServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream)
  在 System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)
  在 System.Web.Services.Protocols.WebServiceHandler.Invoke()
  --- 内部异常堆栈跟踪的结尾 ---

类型 System.Data.SqlTypes.SqlString 的对象不能用在非类型化的集合!!!!

大家没有遇到这个功能需求,如何来解决的。
谢谢!

------解决方案--------------------
System.Data.SqlClient.SqlParameter[]这个需要序列化吧
------解决方案--------------------
System.Data.SqlClient.SqlParameter[] 

这个得用客户端代理类里的SqlParameter。
------解决方案--------------------
要将 System.Data.SqlTypes.SqlString 用作参数、返回类型或者类或结构的成员,该参数、返回类型或成员必须声明为类型 System.Data.SqlTypes.SqlString(它不能是对象)
-------------------
同意的它的DbType也要用 WindowsFormsApplication1.WebService_SQLHelp 下的DBType
  相关解决方案