绑定 属性 消息的上下文不支持值 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的部分功能,所以还得再等等。
这是我在将使用 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的部分功能,所以还得再等等。