我在WCF客户端中寻找单点,我可以在其中过滤传出请求。我正在将用户会话信息注入我的请求中。标题,如果用户会话信息不可用,我想阻止/中止发送消息。我到处寻找,无法找到合适的解决方案。我有一个IClientMessageInspector,它负责注入会话信息,但是我找不到从IClientMessageInspector中止消息的方法。
关于如何从IClientMessageInspector取消消息:How to cancel a request in BeforeSendRequest,2年前还有一个未解决的问题。这不是重复,因为我也可以通过更好/其他方式实现单点客户端消息过滤,而不一定通过IClientMessageInspector。
到目前为止我尝试过的事情:
仅供参考,这是我的BeforeSendRequest(IClientMessageInspector):
public object BeforeSendRequest(ref Message request, System.ServiceModel.IClientChannel channel)
{
if (UserContext.CurrentUser != null && UserContext.CurrentSessionId != Guid.Empty)
{
var headerToAttach = new RequestObject()
{
UserId = UserContext.CurrentUser.Id,
SessionToken = UserContext.CurrentSessionId
};
var wcfHeader = MessageHeader.CreateHeader("SessionHeader", "sessions", headerToAttach);
request.Headers.Add(wcfHeader);
}
else if (request.Headers.Action.Split('/').Last().ToLower() != "login")
{
// How to abort the request?
}
return null;
}