【问题标题】:Getting Error System.InvalidOperationException When Invoke WebService Method调用 WebService 方法时出现错误 System.InvalidOperationException
【发布时间】:2012-02-20 07:37:01
【问题描述】:

我已经创建了一个 WebService..并在 WebService 中创建了 Get 方法..

我的代码是

公共类 WebService : System.Web.Services.WebService {

    DataClassesDataContext db = new DataClassesDataContext();

    public WebService () 
    {
        //Console.log("Enter");
        //Uncomment the following line if using designed components 
        //InitializeComponent(); 
    }

    [WebMethod]
    public string HelloWorld() {
        return "Hello World";
    }

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]
    public object Get()
    {        
        return db.Countries.ToList();
    }
}

但是当我在那里测试 Web 服务时,我得到以下错误..

System.InvalidOperationException:生成错误 XML 文档。 ---> System.InvalidOperationException:类型 System.Collections.Generic.List`1[[国家,App_Code.hlnie2jd, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null]] 可能不是 在这种情况下使用。在 System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(字符串 名称、字符串 ns、对象 o、布尔 xsiType)在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_Object(字符串 n, String ns, Object o, Boolean isNullable, Boolean needType) at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write3_anyType(对象 o) 在 Microsoft.Xml.Serialization.GeneratedAssembly.ObjectSerializer.Serialize(对象 objectToSerialize,XmlSerializationWriter 作家)在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, 对象 o、XmlSerializerNamespaces 命名空间、字符串 encodingStyle、 String id) --- 内部异常堆栈跟踪结束 --- at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, 对象 o、XmlSerializerNamespaces 命名空间、字符串 encodingStyle、 字符串 id) 在 System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter、Object o、XmlSerializerNamespaces 命名空间)在 System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, 对象 o) 在 System.Web.Services.Protocols.XmlReturnWriter.Write(HttpResponse 响应,流输出流,对象返回值)在 System.Web.Services.Protocols.HttpServerProtocol.WriteReturns(对象 [] returnValues,流输出流)在 System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] 返回值)在 System.Web.Services.Protocols.WebServiceHandler.Invoke()

任何有解决方案的人请帮助我

【问题讨论】:

    标签: asp.net linq web-services


    【解决方案1】:

    这可能是因为你的方法签名有对象作为返回类型。

    看看这个问题: ...may not be used in this context...while serialization

    【讨论】:

    • 如果我将方法声明为 List [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)] public List<Country> Get() { return db.Countries.ToList(); } 那么同样的错误...
    【解决方案2】:

    您不能从服务中返回列表或对象类型。

    但是你可以返回数组:

        [WebMethod]
        public Country[] Get()
        {
            // get you data
            return data.ToArray();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多