owin map extension返回404

时间:2017-07-19 10:51:10

标签: asp.net-web-api owin katana

我尝试为我的Web API操作实现中间件,所以我发现MapIAppBuilder inerface的扩展方法。我检查了katana源代码[1],此方法返回与IAppBuilder方法相同的Use

但在owin / WebAPI中,我不知道为什么控制器在映射后无法解析?

在调用下一个中间件之后,它很明显,owin应该运行下一个中间件,但是在映射后似乎没有下一个中间件,我的错误在哪里?

启动:

        public void Configuration(IAppBuilder app)
        {
            ConfigureOAuth(app);
            app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);


            app = app.Map("/api", application => {
                ConfigurationAPI(application);
            });


            app.Use<ExceptionMiddleware>();
            //app.UseWebApi(config);
        }


        public void ConfigurationAPI(IAppBuilder app)
        {
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            FilterConfig.RegisterHttpFilters(GlobalConfiguration.Configuration.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);

            HttpConfiguration config = new HttpConfiguration();
            WebApiConfig.Register(config);

            SimpleInjectorBootstrapper.Initialize();
            DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(SharedLayer.Core.CoreObject.container));
            config.DependencyResolver = new SimpleInjectorWebApiDependencyResolver(SharedLayer.Core.CoreObject.container);

            app = app.Use<ExceptionMiddleware>();
            app = app.Use<AuthenticateMiddleware>();
            app.UseWebApi(config);

        }

但是当我添加以下运行块时,所有请求都返回“test”!!

        app.Run(async context =>
        {
            await context.Response.WriteAsync("test");
        });
        app.UseWebApi(config);

1 个答案:

答案 0 :(得分:2)

您的路线定义是否包含/api段? Map从管道的分支路径(ConfigurationAPI)中删除它。