我正在将现有的 WCF 服务迁移到 Web API。在 WCF 中,实现了 IDispatchMessageInspector 成员,用于验证/记录传入请求和传出回复。就像下面这样
“#region IDispatchMessageInspector 成员”
public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel, InstanceContext instanceContext)
{
//Log the Request with Log4Net
Logging.InfoMessage = string.Format("{0} - {1}", "Before calling ", GetWebMethodName());
Logging.DebugMessage = request.ToString();
Logging.WriteLog();
//Logic to validate Request
}
return null;
}
public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
{
//Log the Response with Log4Net
Logging.DebugMessage = reply.ToString();
Logging.InfoMessage = string.Format("{0} - {1}", "After called ", GetWebMethodName());
Logging.WriteLog();
}
#endregion
我想在 webAPI 2.0 中实现同样的目标。执行此操作后,所有请求验证以及日志记录都会在全局范围内处理。
如果您已经这样做过,请分享您的经验..
最佳答案
我建议创建一个自定义消息处理程序。自定义消息处理程序是一个继承自DelegatingHandler类的类。
所有进入 WebAPI 请求处理周期的请求首先由请求处理程序处理,所有发出的响应最后由处理程序处理。
关于wcf - Web API 2.0 - 如何验证 ASP.NET Web API 中的传入请求,类似于 WCF AfterReceiveRequest(IDispatchMessageInspector 成员),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23953830/