我从使用ASP 2017的所有默认设置的Empty asp.net Web API应用程序开始。我使用httpGet添加了一个 Controller 方法,结果很好。

现在,我安装了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启动代码也正在调用。怎么了请提出建议!

最佳答案

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

app.UseWebApi(config);

注意:此方法位于:
using Owin; //Assembly System.Web.Http.Owin

关于asp.net-web-api2 - 将启动更改为OWIN后获得404以获取API Controller 结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54140518/

10-13 06:53