我正在将一些WCF服务转移到Web API。
OperationContext.Current通常在WCF中用于记录和登台。
但我看到HttpContext.Current和OperationContext.Current为 空。
我使用了一个框架,它使用OperationContext.Current来获取当前线程的执行上下文。因此,如果我选择其他方式,我必须将我的自定义方法添加到框架,我试图避免。
问题:
OWIN启动:
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
HttpConfiguration config = new HttpConfiguration();
HttpListener listener = (HttpListener)appBuilder.Properties["System.Net.HttpListener"];
listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication;
config.MapHttpAttributeRoutes();
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "Data",
model: GetModel()
);
config.EnsureInitialized();
appBuilder.UseWebApi(config);
}
}
使用
调用启动 WebApp.Start<Startup>(rootUri);
CustomFilterAttribute.cs
public class CustomFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
var caller = OperationContext.Current; //null
caller = System.Web.HttpContext.Current; //null
caller = actionContext.RequestContext.Principal.Identity as WindowsIdentity; //desired
}
}