在现有的ASP.NET MVC应用程序中,我添加了WebAPI。我已经使用了从一个全新的项目中生成的大部分模板代码。
我正面临一些与身份验证有关的问题。为了避免我添加的api的正常登录过程:
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));
根据默认模板。
但是,我在调用我的api时遇到错误:“没有OWIN身份验证管理器与请求相关联。”
我发现这是因为有一个自定义HTTP模块处于活动状态。从web.config中删除模块使API工作。但是,“普通”Web应用程序需要此模块。
有没有办法让HTTP模块与owin认证共存?
模块的定义如下:
public class MGPContextInitializerModule : IHttpModule
{
public void Init(HttpApplication context)
{
if (context != null)
{
context.AcquireRequestState += AcquireRequestState;
context.BeginRequest += new EventHandler(BeginRequest);
}
}
private void AcquireRequestState(object sender, EventArgs e)
{
if (HttpContext.Current.Session != null)
{
InitializeUserCulture(new HttpContextWrapper(HttpContext.Current).GetSessionID());
}
}
private void BeginRequest(object sender, EventArgs e)
{
InitializeCustomer((HttpApplication)sender);
}
private static void InitializeInstantie(HttpApplication application)
{
HttpContextBase contextBase = new HttpContextWrapper(application.Context);
RouteData routeData = RouteTable.Routes.GetRouteData(contextBase);
if (routeData != null)
{
var customer = routeData.Values["customer"];
if (customer != null)
{
Initializer.InitializeCustomer(customer.ToString());
}
}
}
}