WCF自定义HTTP头已添加到服务器响应中,但未从服务器返回
我希望所有WCF服务调用都返回CallDuration自定义HTTP头 在服务器上有一个IDispatchMessageInspector实现,该实现具有以下BeforeSendReply实现:WCF自定义HTTP头已添加到服务器响应中,但未从服务器返回,http,wcf,http-headers,filtering,custom-headers,Http,Wcf,Http Headers,Filtering,Custom Headers,我希望所有WCF服务调用都返回CallDuration自定义HTTP头 在服务器上有一个IDispatchMessageInspector实现,该实现具有以下BeforeSendReply实现: public void BeforeSendReply(ref Message reply, object correlationState) { // ... calculate CallDuration etc. ... // send CallDuration WebOperation
public void BeforeSendReply(ref Message reply, object correlationState)
{
// ... calculate CallDuration etc. ...
// send CallDuration
WebOperationContext.Current?.OutgoingResponse?.Headers.Add("CallDuration", $"{duration.TotalSeconds}");
}
这应该将CallDuration作为自定义HTTP头添加到所有WCF响应中。但事实并非如此
哪些可能的过滤器可以阻止自定义HTTP头到达客户端?其他HTTP头保持不变。不要使用WebOperationContext,而是将头添加到回复中:
public void BeforeSendReply(ref Message reply, object correlationState)
{
//assumes "duration" is a variable initialized in AfterReceiveRequest, containing the time in ticks at that moment
long callDuration = DateTime.Now.Ticks - duration;
HttpResponseMessageProperty prop;
if (reply.Properties.ContainsKey(HttpResponseMessageProperty.Name))
{
prop = (HttpResponseMessageProperty)reply.Properties[HttpResponseMessageProperty.Name];
}
else
{
prop = new HttpResponseMessageProperty();
reply.Properties.Add(HttpResponseMessageProperty.Name, prop);
}
prop.Headers.Add("CallDuration", callDuration.ToString());
}
可以使用SoapUI验证标题的添加
您是否尝试过在不使用
的情况下访问调用.Headers
。
在前面的步骤中调用,并且仅在那里使用
??。
如果由于某种原因左侧为null,操作将停止执行,并且不会导致任何错误。您好,是的,我已经在调试器中验证了没有子表达式为null-elvis运算符只是作为额外的,可能是多余的安全性存在。如果这对我有效,我对你深表感激,并给予你谦逊的赏金-我会尽快检查的!它就像一个符咒。赏金来之不易。非常感谢。