Я делаю следующее с помощью WebApi AuthorizationFilter, также вы также должны иметь возможность сделать это на контроллере MVC и контексте контроллера WebApi, если у вас есть промежуточное программное обеспечение для его поддержки, например app.UseWebApi (app) для WebApi.
Компонент должен поддерживать конвейер Owin, иначе вы не знаете, как вы получите контекст для правильного потока.
Так что, возможно, вы сможете создать свой собственный
OwinMiddleware
для подключения этого компонента с помощью app.Use () при запуске Owin.
Дополнительная информация здесь
Промежуточное ПО "Мои свойства"
public class PropertiesMiddleware : OwinMiddleware
{
Dictionary<string, object> _properties = null;
public PropertiesMiddleware(OwinMiddleware next, Dictionary<string, object> properties)
: base(next)
{
_properties = properties;
}
public async override Task Invoke(IOwinContext context)
{
if (_properties != null)
{
foreach (var prop in _properties)
if (context.Get<object>(prop.Key) == null)
{
context.Set<object>(prop.Key, prop.Value);
}
}
await Next.Invoke(context);
}
}
Конфигурация Owin StartUp
public void Configuration(IAppBuilder app)
{
var properties = new Dictionary<string, object>();
properties.Add("AppName", AppName);
//pass any properties through the Owin context Environment
app.Use(typeof(PropertiesMiddleware), new object[] { properties });
}
Фильтр WebApi
public async Task<HttpResponseMessage> ExecuteAuthorizationFilterAsync(HttpActionContext context, CancellationToken cancellationToken, Func<Task<HttpResponseMessage>> continuation)
{
var owinContext = context.Request.GetOwinContext();
var owinEnvVars = owinContext.Environment;
var appName = owinEnvVars["AppName"];
}
Удачного кодирования!
person
dynamiclynk
schedule
26.02.2015