C#WebService返回dynamic类型报错问题

本文讨论了在C# WinForm应用中调用WebService时遇到的关于dynamic类型的异常问题。当WebService返回非简单类型如数组或对象数组时,会引发 InvalidOperationException。解决方法是在WebService类中添加相应返回类型的辅助方法,使XML能够处理这些类型。问题在.NET 4下XP环境中出现,不确定高版本是否已修复,并批评了微软频繁更新导致的兼容性问题。
摘要由CSDN通过智能技术生成

        近期在写WinForm调用WebService的相关程序,遇到一些“莫名其妙”的问题:

System.InvalidOperationException: 生成 XML 文档时出错。 ---> System.InvalidOperationException: 类型 System.String[] 不能在此上下文中使用。

System.InvalidOperationException: 生成 XML 文档时出错。 ---> System.InvalidOperationException: 类型 System.Int32[] 不能在此上下文中使用。

System.InvalidOperationException: 生成 XML 文档时出错。 ---> System.InvalidOperationException: 不应是类型 Aspx_new.tinvoke。使用 XmlInclude 或 SoapInclude 特性静态指定非已知的类型。

       之前曾经测试过用WebService返回自定义的类,都能正常返回,难道系统自带的类型却不劫持?后来测试直接返回自定义类型竟然是正常的,再次调用返回dynamic类型的方法,又不报错了。:<

         最后测试发现,返回dynamic类型时所有非简单值的还回都”可能“报错,如果返回值不是简单类型(基本类型:int,string),比如数组、对象数组等必须保证当前类中有一个方法返回值是这种类型。

    public class CallServer : WebService
    {

        [WebMethod] 这个方法返回dynamic类型或object类型因为它是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值