Castle Windsor 拦截器 - 添加 HTTP Header
Castle Windsor Interceptor - adding a HTTP Header
我正在尝试添加一个拦截器以仅添加一个简单的 HTTP header,是否有使用 IInvocation 执行此操作的好方法?
我环顾四周,没有看到任何示例,也没有通过 WcfPolicy 看到。下面是我正在尝试做的一个例子..
干杯,
杰米
public void Intercept(IInvocation invocation)
{
Guard.NotNull(() => invocation, invocation);
invocation.Proceed();
AddVersionHeaders(invocation);
}
private static void AddVersionHeaders(IInvocation invocation)
{
using (var scope = new OperationContextScope(OperationContext.Current))
{
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = new HttpRequestMessageProperty
{
Headers =
{
{
"X-Version", invocation.TargetType.Assembly.GetName().Version.ToString()
}
}
};
}
}
最后,只是将它添加到每个 Global.asax 中,将它放在库中会很好,但也许简单而不是重用是最好的选择。
我正在尝试添加一个拦截器以仅添加一个简单的 HTTP header,是否有使用 IInvocation 执行此操作的好方法?
我环顾四周,没有看到任何示例,也没有通过 WcfPolicy 看到。下面是我正在尝试做的一个例子..
干杯,
杰米
public void Intercept(IInvocation invocation)
{
Guard.NotNull(() => invocation, invocation);
invocation.Proceed();
AddVersionHeaders(invocation);
}
private static void AddVersionHeaders(IInvocation invocation)
{
using (var scope = new OperationContextScope(OperationContext.Current))
{
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = new HttpRequestMessageProperty
{
Headers =
{
{
"X-Version", invocation.TargetType.Assembly.GetName().Version.ToString()
}
}
};
}
}
最后,只是将它添加到每个 Global.asax 中,将它放在库中会很好,但也许简单而不是重用是最好的选择。