【问题标题】:How to set web api project on mvc project (api route return code 404)?如何在 mvc 项目上设置 web api 项目(api 路由返回码 404)?
【发布时间】:2016-12-20 00:42:39
【问题描述】:

作为我第一次构建 MVC 应用程序,带有控制器和其他东西。之后我意识到我也需要制作移动应用程序,所以我将新的 web api 项目放入解决方案中。


我引用了 mvc 应用程序,创建了实体模型,创建了工厂和所有东西,但是当它归结为调用 web api 控制器时,我得到返回码 404 未找到。

我认为问题在于项目的路由。所以这是我来自 SHApi 项目的 WebApiConfig。

    public static void Register(HttpConfiguration config)
    {
        // Web API routes
        config.EnableCors();
        config.MapHttpAttributeRoutes();
        config.EnableCors(new EnableCorsAttribute("*", "*", "*"));


        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: 
            new
            {
                controller="StudentOffer",
                action="Get",
                id = RouteParameter.Optional
            },
            constraints: new {controller = @"(?!web).*"}
        );
    }

这是我来自 MVC 应用程序的 RouteConfig。

 public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "web/{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

这是我来自 WebApi 项目的 RouteConfig。

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "web/{controller}/{action}/{id}",
            defaults: new { action = "Index", id = UrlParameter.Optional }
        );

        routes.MapHttpRoute(name: "DefaultApi",
            routeTemplate:"api/{controller}/{action}/{id}",
            defaults: new { controller = "City",
            action="Get",
            id = RouteParameter.Optional},
            constraints: new { controller = @"(?!web).*" }
            );
    }

我可以轻松访问 MVC 控制器,但 Web api 是不可能的。 我尝试了很多东西,但我确信我错过了一些东西,所以有没有经验的人可以帮助我,有什么诀窍可以做到这一点吗?

谢谢你!

【问题讨论】:

    标签: c# asp.net-mvc asp.net-web-api routing asp.net-mvc-routing


    【解决方案1】:

    你需要运行两个项目的单实例,首先是web项目,因为api项目有一些依赖,然后将api项目作为单实例启动,然后你用不同的端口访问它们。

    您正在运行单个实例,右键单击项目,调试,作为单个实例运行(类似的东西)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-13
      • 2013-04-17
      • 2016-02-28
      • 2020-10-29
      • 1970-01-01
      • 2021-10-18
      • 2013-08-14
      • 1970-01-01
      相关资源
      最近更新 更多