我有一个 WCF 拦截器,它在每次请求时都会被调用:
public class WebServiceInterceptor : IDispatchMessageInspector
{
public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
var action = OperationContext.Current.IncomingMessageHeaders.Action;
var name = instanceContext.GetServiceInstance().GetType().Name;
if (action != null)
{
var operationName = action.Substring(action.LastIndexOf("/", StringComparison.OrdinalIgnoreCase) + 1);
}
return null;
}
public void BeforeSendReply(ref Message reply, object correlationState)
{
}
}
如何获取将要调用的服务类的方法名称? 我想从此方法中获取一个属性。
最佳答案
所有这些字符串处理都是 hack 和不可靠的。学习使用 WCF 为您提供的元数据。您不需要解析类型名称之外的任何内容。
当您注册此 IDispatchMessageInspector
时,您可能拥有可用的必要元数据(例如 OperationDescription
)。将该信息传递给您的类构造函数并将其存储在实例字段中。这样,AfterReceiveRequest
以后就可以使用该信息。
关于c# - 如何在 AfterReceiveRequest 中调用服务方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24955257/