Ich mache das unten mit einem WebApi AuthorizationFilter, auch sollten Sie in der Lage sein, dies auf einem MVC Controller und WebApi controller context zu tun, wenn Sie Middleware haben, um es zu unterstützen zB app.UseWebApi (app) für WebApi.
Die Komponente muss die Owin-Pipeline unterstützen, ansonsten nicht sicher, wie Sie den Kontext für den richtigen Thread erhalten.
Vielleicht können Sie Ihre eigene
OwinMiddleware
wireup diese Komponente mit der app.Use() in der Owin Start erstellen.
Mehr Infos here
Meine Immobilien 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 Konfiguration
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 Filter
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"];
}
Glückliche Codierung!