将启动更改为 OWIN 后获得 404 以获得 api 控制器结果

getting 404 for get api controller result after changing startup to OWIN

我从空 asp.net web api 应用程序开始,所有默认设置为 VS 2017。我用 httpGet 添加了一个控制器方法,结果很好。

现在我安装了 Microsoft.Owin.Host.SystemWeb 并添加了一个 OWIN Startupclass.

[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 启动代码也在调用。这里有什么问题吗?请建议!

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

app.UseWebApi(config);

注:此方法位于:

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