【发布时间】:2020-03-29 14:50:03
【问题描述】:
当我注入我的服务时,我添加了一个 CustomEndpointBehavior 来添加一个 MessageInspector 来添加我需要成功请求的标头。
问题是我正在调用的 WCF 服务在 FIRST 标头中期待一个特定的标头,即 .NET 默认 XML 序列化器,由于他的名字而在 SECOND 标头处序列化(我认为这是问题所在)
{
private Configuration Configuration;
public MessageInspector(Configuration Configuration)
{
this.Configuration = Configuration;
}
public void AfterReceiveReply(ref Message reply, object correlationState) { }
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
var header1 = new Header1(Configuration);
var header2 = new Header2(Configuration);
request.Add(header1);
request.Add(header2);
return;
}
}
如何设置标题的顺序?如果它是序列化器的事情,我怎么能自定义序列化的顺序?
【问题讨论】:
-
您不应该期望发送的参数有任何顺序,尤其是对于请求标头。它们通常以无序的方式读取,其中为字典(或匿名对象)分配键/值,并且以任何顺序评估参数。 AFAIK,如果不使用 HttpClient 或更底层(更接近金属)发出您自己的请求,就无法指定标头参数的顺序。
标签: c# wcf soap dependency-injection .net-core