【问题标题】:getting 404 for get api controller result after changing startup to OWIN将启动更改为 OWIN 后获取 404 以获取 api 控制器结果
【发布时间】:2019-01-11 14:12:11
【问题描述】:

我从具有 VS 2017 的所有默认设置的空 asp.net web api 应用程序开始。我添加了一个带有 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 启动代码也在调用。这里有什么问题?请提出建议!。

【问题讨论】:

    标签: asp.net-web-api2


    【解决方案1】:

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

    app.UseWebApi(config);
    

    注意:此方法位于:

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

    【讨论】:

    • 谢谢,它的作品,我也添加了AspNet.WebApi.OwinSelfHost包。
    • @user584018 太好了,为了避免跨域错误,我建议您也添加这一行(在 UserWebApi() 之前)添加 app.UseCors(CorsOptions.AllowAll);
    猜你喜欢
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    相关资源
    最近更新 更多