Как получить имя вызываемой операции в WCF Message Inspector
Я делаю инспектор сообщений в WCF:
public class LogMessageInspector :
IDispatchMessageInspector, IClientMessageInspector
который реализует метод:
public object AfterReceiveRequest(ref Message request,
IClientChannel channel, InstanceContext instanceContext)
Я могу получить имя вызываемой службы с помощью:
instanceContext.GetServiceInstance().GetType().Name
Но как мне получить имя вызываемой операции?
Ответы
Ответ 1
Это не очень, но это то, что я сделал, чтобы получить название операции:
var action = OperationContext.Current.IncomingMessageHeaders.Action;
var operationName = action.Substring(action.LastIndexOf("/", StringComparison.OrdinalIgnoreCase) + 1);
Ответ 2
var operationName = OperationContext.Current.IncomingMessageProperties["HttpOperationName"] as string;
Ответ 3
Этот подход аналогичен другим, представленным здесь, но использует Path.GetFileName
:
Path.GetFileName(OperationContext.Current.IncomingMessageHeaders.Action);
Возвращаемое значение этого метода и формат строки path
работают довольно гармонично в этом сценарии:
Символы после последнего символа каталога в пути. Если последний Характер пути - это каталог или разделитель томов, этот метод возвращает String.Empty. Если путь равен null, этот метод возвращает нуль.
Ответ 4
OperationContext.Current.IncomingMessageHeaders.Action.Split('/').ToList().Last();