绑定 属性 消息的上下文不支持值 mtom

The value mtom is not supported in this context for the binding property message

这是我在将使用 WCF 服务的 Asp .Net 函数应用程序转换为 .Net 核心后遇到的问题。 WCF 服务需要编码类型为 mtom 的 HTTP 内容,但 .Net 核心不支持它,因此它发出了异常, 一旦调用 WCF 服务,“绑定 属性 消息的上下文中不支持值 mtom”,

我将在下面附上解决方法

然后安装 WcfCoreMtomEncoder nuget 包 在为端点创建绑定时在参考文件中, 创建 basicHttpBinding

var transportSecurityBindingElement = new BasicHttpBinding();

设置所需的安全和传输模式

transportSecurityBindingElement.Security.Mode =BasicHttpSecurityMode.Transport; 
transportSecurityBindingElement.Security.Transport.ClientCredentialType = System.ServiceModel.HttpClientCredentialType.Basic;

创建自定义绑定类型的对象

var customTransportSecurityBinding = new CustomBinding(transportSecurityBindingElement);

使用 mtomMessage 编码器创建编码元素

 var encodingElement = new MtomMessageEncoderBindingElement(new TextMessageEncodingBindingElement());

通过迭代绑定的元素列表

找到并替换编码属性
for (int i = 0; i < customTransportSecurityBinding.Elements.Count; i++)
                {
                    if (customTransportSecurityBinding.Elements[i] is TextMessageEncodingBindingElement) {
                        customTransportSecurityBinding.Elements[i] = encodingElement;
                        break;
                    }
                }

return 自定义绑定,因此可以在任何地方使用

  return customTransportSecurityBinding

据我所知WCF目前不支持MTOM的部分功能,所以还得再等等。