调用 WebService 方法时出现错误 System.InvalidOperationException

Posted

技术标签:

【中文标题】调用 WebService 方法时出现错误 System.InvalidOperationException【英文标题】:Getting Error System.InvalidOperationException When Invoke WebService Method 【发布时间】: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()

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

【问题讨论】:

【参考方案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();
    

【讨论】:

以上是关于调用 WebService 方法时出现错误 System.InvalidOperationException的主要内容,如果未能解决你的问题,请参考以下文章

在从 blob 存储中获取文件并传递给模型进行预测时出现 azure aci webservice 的超时错误

调用类方法时出现“调用未定义函数”错误

调用 [playerFactory play] 方法时出现错误访问错误

通过指针调用方法时出现段错误

尝试在 PHP 文件中调用方法时出现 ActionScript 错误

调用super的方法时出现JPA Transaction错误