Visual Studio .Net MAUI Soap 1.2 中出现 WCF 服务自定义绑定端点错误

问题描述 投票:0回答:1

我有以下问题,我有一个 Visual Studio 17.9.6 .Net MAUI net 8.0,我有一个 .asmx Web 服务,当通过 HttpsTransportBindingElement 部分的 GetBinding 中的 EndpointConfiguration 中的肥皂 1.2 连接时,出现以下错误:

System.ArrayTypeMismatchException 尝试以与数组不兼容的类型访问元素。

在 GetBindingForEndpoint 中:

if ((endpointConfiguration == EndpointConfiguration.srvNumbSoap12))
{
    System.ServiceModel.Channels.CustomBinding result = new System.ServiceModel.Channels.CustomBinding();
    System.ServiceModel.Channels.TextMessageEncodingBindingElement textBindingElement = new System.ServiceModel.Channels.TextMessageEncodingBindingElement();
    textBindingElement.MessageVersion = System.ServiceModel.Channels.MessageVersion.CreateVersion(System.ServiceModel.EnvelopeVersion.Soap12, System.ServiceModel.Channels.AddressingVersion.None);
    result.Elements.Add(textBindingElement);
    System.ServiceModel.Channels.HttpsTransportBindingElement httpsBindingElement = new System.ServiceModel.Channels.HttpsTransportBindingElement();
    httpsBindingElement.AllowCookies = true;
    httpsBindingElement.MaxBufferSize = int.MaxValue;
    httpsBindingElement.MaxReceivedMessageSize = int.MaxValue;
    -->result.Elements.Add(httpsBindingElement);
    return result;
}

连接服务时,我将其设置为 System.Array 集合类型,Dictionary 集合类型:System.Collections.Generic.Dictionary,在下一页上,我通过生成同步操作将其公开

如果我在旧版本中尝试,例如17.8.6,你可以毫无问题地完成。

跟版本改动有什么关系吗?

wcf maui visual-studio-2022 webservice-client soap1.2
1个回答
0
投票

您在 Visual Studio 17.9.6 (.NET MAUI 8.0) 中遇到的问题

ArrayTypeMismatchException
CustomBinding
的实现中的更改有关。元素的管理比旧版本(例如
17.8.6
)更多。

要考虑的事情:

1.验证元素类型:

确保您在修改 Elements 集合 To 时指定的元素类型是正确的。在集合中,确保 httpsBindingElement 是预期类型的字符串。如果需要,将其强制转换为正确的类型可能会很有用。

2.使用特定的绑定元素集合:

CustomBinding
不是直接使用其用途所需的元素来扩展类,而是为扩展而设计。在您看来,记住使用 System.Drawing 中的特定元素绑定目录是个好主意。服务模型命名空间。例如,对于 textBindingElement,您可能会发现使用
TextMessageEncodingBindingElementCollection
比较合适,而对于 httpsBindingElement,使用
HttpsTransportBindingElementCollection
则非常合适。显然,如果添加新元素,这些集合可以保证类型安全。

其他提示:

© www.soinside.com 2019 - 2024. All rights reserved.