我创建了一个基本的WebAPI项目(勾选了WebAPI的空白Web项目),并向该项目添加了OWIN NuGet包。
- Microsoft.AspNet.WebApi.Owin
- Microsoft.Owin.Host.SystemWeb
- Owin
然后我创建了一个Logging类,并通过启动配置将其连接到项目中。
using AppFunc = System.Func<System.Collections.Generic.IDictionary<string, object>, System.Threading.Tasks.Task>;
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
Debug.WriteLine("Startup Called");
var config = new HttpConfiguration();
WebApiConfig.Register(config);
appBuilder.UseWebApi(config);
appBuilder.Use(typeof(LoggingMiddleware));
}
}
public class LoggingMiddleware
{
private AppFunc Next { get; set; }
public LoggingMiddleware(AppFunc next)
{
Next = next;
}
public async Task Invoke(IDictionary<string, object> environment)
{
Debug.WriteLine("Begin Request");
await Next.Invoke(environment);
Debug.WriteLine("End Request");
}
}
当我运行该项目并打开默认页面时,我看到开始/结束请求被调用(发生两次,不确定原因)。然而,如果我尝试调用
/api
路由(例如`/api/ping/`),请求成功完成,但是在日志中我没有看到开始/结束请求的状态。我错过了什么?