Ответ 1
Я делаю ниже с помощью WebApi AuthorizationFilter, также вы также можете это сделать на контроллере MVC и в контексте контроллера WebApi, если у вас есть промежуточное программное обеспечение для его поддержки, например app.UseWebApi(приложение) для WebApi.
Компонент должен поддерживать конвейер Owin, иначе не уверен, как вы получите контекст для правильного потока.
Итак, возможно, вы можете создать свой собственный
чтобы подключить этот компонент с помощью app.Use() в вашем запуске Owin.
Подробнее здесь
Мои свойства Middleware
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"];
}
Счастливое кодирование!