Web服务错误我在Web服务中发现了错误

本文关键字:Web 错误 服务 发现 | 更新日期: 2023-09-27 18:22:18

AutoComplete.asmx 中的这些方法

[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]

StackTrace:

System.InvalidOperationException:生成XML文档。--->System.InvalidCastException:无法强制转换对象类型为"System.Collections.Generic.List `1[System.String]"的'System.String[]'.atMicrosoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write3_rr‌​ayOfString(对象o) 在Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfStringSerializer.Serialize(‌​对象objectToSerialize,XmlSerializationWriter编写器)

Web服务错误我在Web服务中发现了错误

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

[WebMethod]
public string[] GetCountries(string prefixText)
{
     // .....
     return CountryNames.ToArray();
}