如何在 mvc 项目(api 路由 return 代码 404)上设置 web api 项目?
How to set web api project on mvc project (api route return code 404)?
作为第一个,我构建了 MVC 应用程序,带有控制器和所有东西。之后我意识到我还需要制作移动应用程序,所以我将新的网络 api 项目放在解决方案中。
我引用了 mvc 应用程序,制作了实体模型,创建了工厂等等,但是当它归结为调用 web api 控制器时,我得到 return 找不到代码 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 不可能。
我尝试了很多东西,但我确定我遗漏了一些东西,所以有没有经验丰富的人可以帮助我,有什么技巧可以这样做吗?
谢谢前面的!
您需要 运行 两个项目的单个实例,首先是 Web 项目,因为 api 项目与它有一些依赖关系,然后将 api 项目作为单个实例启动,并且然后你用不同的端口访问它们。
你正在 运行ing 单实例,右键单击项目,调试,运行 作为单实例(类似的东西)。
作为第一个,我构建了 MVC 应用程序,带有控制器和所有东西。之后我意识到我还需要制作移动应用程序,所以我将新的网络 api 项目放在解决方案中。
我引用了 mvc 应用程序,制作了实体模型,创建了工厂等等,但是当它归结为调用 web api 控制器时,我得到 return 找不到代码 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 不可能。 我尝试了很多东西,但我确定我遗漏了一些东西,所以有没有经验丰富的人可以帮助我,有什么技巧可以这样做吗?
谢谢前面的!
您需要 运行 两个项目的单个实例,首先是 Web 项目,因为 api 项目与它有一些依赖关系,然后将 api 项目作为单个实例启动,并且然后你用不同的端口访问它们。
你正在 运行ing 单实例,右键单击项目,调试,运行 作为单实例(类似的东西)。