如何修复WCF引用上的“尝试将元素作为与数组不兼容的类型进行访问”错误?

How can I fix this 'Attempted to access an element as a type incompatible with the array.' error on my WCF Reference?

提问人:Uuuuuumm 提问时间:10/26/2023 最后编辑:Uuuuuumm 更新时间:10/26/2023 访问量:31

问:

我得到了一个 WSDL,并使用 Visual Studio 的 SVCUtil 工具生成了一个客户端引用。 我正在使用 .net Core 6。

此生成的函数引发异常:

 private static Binding GetBindingForEndpoint()
 {
     CustomBinding result = new();
     result.Elements.Add(new TextMessageEncodingBindingElement(){
         MessageVersion = MessageVersion.CreateVersion(System.ServiceModel.EnvelopeVersion.Soap12, AddressingVersion.None)
     });
     HttpsTransportBindingElement httpsBindingElement = new()
     {
         AllowCookies = true,
         MaxBufferSize = int.MaxValue,
         MaxReceivedMessageSize = int.MaxValue
     };
     result.Elements.Add(httpsBindingElement);

     return result;
 }

这似乎是一个低级问题,我不确定原因是什么,但“结果”行。Elements.Add(httpsBindingElement);' 引发错误

例外:

System.ArrayTypeMismatchException:“尝试将元素作为与数组不兼容的类型进行访问。

This exception was originally thrown at this call stack:
    System.Collections.Generic.List<T>.Insert(int, T) in List.cs
    System.Collections.ObjectModel.Collection<T>.Add(T) in Collection.cs
    MyService.MyServiceOrderServicesSoapClient.GetBindingForEndpoint() in Reference.cs
    MyService.MyServiceOrderServicesSoapClient.MyServiceOrderServicesSoapClient(MyService.MyServiceOrderServicesSoapClient.EndpointConfiguration) in Reference.cs
    MyProject.Services.API_Tools.MyServiceAPITools.GetVR() in MyServiceAPITools.cs

注意事项:

  • 结果。Elements 是 List<BindingElement>。
  • HttpsTransportBindingElement 和 TextMessageEncodingBindingElement 是 BindingElement 的子类

我对错误的理解是,它无法将 HttpsTransportBindingElement 插入到 List<BindingElements 中>因为类型不正确,即使它是列表类型的子类。

C# ASP.NET-MVC WCF SOAP DOTNET-SVCUTIL

评论

0赞 QI You 10/31/2023
由于某些 WCF 配置在 ASP.NET Core 中不受支持,因此建议您首先创建一个 .net framework 4.8 或更低版本的项目进行测试。

答: 暂无答案