代码之家  ›  专栏  ›  技术社区  ›  user584018

将startup改为owin后,获取API控制器结果404

  •  2
  • user584018  · 技术社区  · 5 年前

    我从空的ASP.NET Web API应用程序开始,并为vs 2017提供所有默认设置。我用httpget添加了一个控制器方法,结果很好。

    现在我安装了 Microsoft.Owin.Host.SystemWeb 并添加了一个owin Startup 班级。

    [assembly: OwinStartup(typeof(WebApp1.Startup))]
    
    namespace WebApp1
    {
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            var config = new HttpConfiguration();
            // Web API routes
            config.MapHttpAttributeRoutes();
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
    }
    

    在那之后我评论了一下 global.asax 我认为我不需要密码,

    protected void Application_Start()
        {
            //GlobalConfiguration.Configure(WebApiConfig.Register);
        }
    

    删除以下Web API路由代码

     //public static class WebApiConfig
    //{
    //    public static void Register(HttpConfiguration config)
    //    {
    //        // Web API configuration and services
    
    //        // Web API routes
    //        config.MapHttpAttributeRoutes();
    
    //        config.Routes.MapHttpRoute(
    //            name: "DefaultApi",
    //            routeTemplate: "api/{controller}/{id}",
    //            defaults: new { id = RouteParameter.Optional }
    //        );
    //    }
    //}
    

    现在我在访问API时遇到404错误,我的owin启动代码也在调用。这里怎么了?请建议!.

    1 回复  |  直到 5 年前
        1
  •  1
  •   Mohammad Nikravesh    5 年前

    您必须在OWIN末尾添加以下代码行 配置 方法:

    app.UseWebApi(config);
    

    注:此方法位于:

    using Owin; //Assembly System.Web.Http.Owin