2012-02-02 176 views
-1

这些方法AutoComplete.asmxWeb服务的错误,我发现了错误的Web服务

[WebMethod] 
public List<string> GetCountries(string prefixText) 
{ 
    SqlConnection con = new SqlConnection(
     ConfigurationManager.ConnectionStrings[ 
      "MarinaNewConnectionString"].ToString()); 

    con.Open(); 

    SqlCommand cmd = new SqlCommand(
     "select * from Marina where Country like @Name+'%'", con); 

    cmd.Parameters.AddWithValue("@Name", prefixText); 

    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    DataTable dt = new DataTable(); 

    da.Fill(dt); 

    List<string> CountryNames = new List<string>(); 

    for(int i=0;i<dt.Rows.Count;i++) 
    { 
     CountryNames.Add(dt.Rows[i][5].ToString()); 
    } 

    return CountryNames; 
} 

我发现错误

System.InvalidOperationException:有一个错误生成XML文档。 --->

System.InvalidCastException:无法转换类型的对象

编辑:

该表的SQL:

CREATE TABLE [dbo].[Marina]( 
    [SNo] [int] IDENTITY(1,1) NOT NULL, 
    [WebSource] [varchar](500) NULL, 
    [MarinaName] [varchar](500) NULL, 
    [Region] [varchar](500) NULL, 
    [Address] [varchar](500) NULL, 
    [Country] [varchar](500) NULL, 
    [fax] [varchar](500) NULL, 
    [Phone] [varchar](500) NULL, 
    [Email] [varchar](500) NULL, 
    [Website] [varchar](500) NULL, 
    [latitude] [varchar](500) NULL, 
    [langitude] [varchar](500) NULL, 
    [NumberOfMoorings] [varchar](500) NULL, 
    [MGiD] [varchar](500) NULL, 
    [Association] [varchar](200) NULL, 
)) ON [PRIMARY] 

栈跟踪:

System.InvalidOperationException:生成时发生错误XML文档。 ---> System.InvalidCastException:无法投射类型为'System.Collections.Generic.List`1 [System.String]'的对象 以键入 'System.String []'。在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write3_Arr ayOfString(对象 O)在 Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfStringSerializer1.Serialize(对象 objectToSerialize,XmlSerializationWriter作家)

+1

你可以发布堆栈跟踪吗? – Rajesh 2012-02-02 10:53:44

+0

这是我的表 CREATE TABLE [DBO]。[滨海]( \t [斯诺] [INT] IDENTITY(1,1)NOT NULL, \t [WebSource] [VARCHAR(500)NULL, \t [MarinaName ] [VARCHAR](500)NULL, \t [地区] [VARCHAR](500)NULL, \t [地址] [VARCHAR](500)NULL, \t [国家] [VARCHAR](500)NULL, \t [500] NULL, \t [Website] [var](500)NULL, \t [Phone] [varchar](500)NULL, \t [Email] [varchar]字符](500)NULL, \t [纬度] [VARCHAR](500)NULL, \t [langitude] [VARCHAR](500)NULL, \t [NumberOfMoorings] [VARCHAR](500)NULL, \t [MGID ] [varchar](500)NULL, \t [Association] [varchar](200)NULL, ) )ON [PRIMARY] – 2012-02-02 10:56:22

+0

System.InvalidOperationException:生成XML文档时发生错误。 ---> System.InvalidCastException:无法强制转换'System.Collections.Generic.List'1 [System.String]'类型的对象以键入'System.String []'。 at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write3_ArrayOfString(Object o) at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfStringSerializer1.Serialize(Object objectToSerialize,XmlSerializationWriter writer) – 2012-02-02 10:58:48

回答

1

我认为你将无法返回一个List<string>对象。返回一个字符串数组而不是泛型。

[WebMethod] 
public string[] GetCountries(string prefixText) 
{ 
    // ..... 

    return CountryNames.ToArray(); 
} 
+0

thanx soniic 它的工作原理 – 2012-02-02 11:32:21