You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI 8连接ASMX Soap1.2服务时遇ArrayTypeMismatchException错误

.NET MAUI 8 + VS 17.9.6 连接ASMX服务的ArrayTypeMismatchException问题分析

这个问题确实和Visual Studio/.NET MAUI的版本变更直接相关——在VS 17.8.6及对应.NET MAUI版本中正常的代码,到VS 17.9.6(对应.NET MAUI 8的后续更新)出现ArrayTypeMismatchException,大概率是System.ServiceModel相关组件在.NET MAUI 8的迭代中引入了兼容性问题:CustomBinding的Elements集合对绑定元素的类型校验逻辑发生变化,或者HttpsTransportBindingElement的底层类型实现有调整,导致添加操作时触发数组类型不匹配的错误。

可行的解决方法:

  • 替换手动CustomBinding为BasicHttpsBinding改造:
    避免手动逐个添加绑定元素,改用官方封装的BasicHttpsBinding,再调整SOAP版本参数,示例代码如下:
    if (endpointConfiguration == EndpointConfiguration.srvNumbSoap12)
    {
        // 初始化基础HTTPS绑定
        var basicBinding = new BasicHttpsBinding(BasicHttpsSecurityMode.Transport);
        basicBinding.AllowCookies = true;
        basicBinding.MaxBufferSize = int.MaxValue;
        basicBinding.MaxReceivedMessageSize = int.MaxValue;
        basicBinding.TextEncoding = System.Text.Encoding.UTF8;
    
        // 转换为CustomBinding以修改SOAP版本
        var customBinding = new CustomBinding(basicBinding);
        var textEncodingElement = customBinding.Elements.Find<System.ServiceModel.Channels.TextMessageEncodingBindingElement>();
        textEncodingElement.MessageVersion = System.ServiceModel.Channels.MessageVersion.CreateVersion(
            System.ServiceModel.EnvelopeVersion.Soap12, 
            System.ServiceModel.Channels.AddressingVersion.None
        );
    
        return customBinding;
    }
    
  • 降级Visual Studio版本:
    暂时回退到VS 17.8.6版本,沿用之前的代码逻辑,直到微软推送修复该兼容性问题的补丁。
  • 安装最新.NET MAUI补丁:
    检查并安装.NET MAUI 8的最新服务更新,部分版本兼容性问题会在后续补丁中被修复。

额外建议:

重新生成ASMX服务引用时,尽量保持默认配置后再手动调整参数,避免因版本变更导致的生成代码隐含类型冲突;优先使用官方提供的绑定类型,减少手动构建CustomBinding的场景,降低版本迭代带来的兼容性风险。

内容的提问来源于stack exchange,提问作者Giorgio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 23:17:25