MVC&;同一解决方案中的Web Api项目

本文关键字:Web Api 项目 解决方案 amp MVC | 更新日期: 2023-09-27 18:30:04

我有一个位于N层应用程序之上的MVC 4项目。我现在需要能够以编程方式使用该应用程序。我在同一个解决方案中创建了一个新的Web API项目,该解决方案位于MVC项目的旁边,再次位于N层应用程序的顶部。

但我不清楚这一切是如何工作的,因为MVC层是一个启动项目:它设置了我的DI、automapper等,也是我部署到服务器的项目。

那么,这一切应该如何设置呢?我可以设置我的MVC项目将所有/api请求路由到新的Web API项目吗?还是Web API项目需要单独部署?

我不想做任何非常规的事情,所以如果有更常见的设置方式,请给我指明正确的方向。

谢谢。

MVC&;同一解决方案中的Web Api项目

WebApi是微软的一个替代的面向服务的应用程序,就像WCF一样。但是WCF使用SOAP协议,WebAPI使用HTTP协议进行通信。

因此,如果您使用WCF为MVC应用程序提供服务,您将单独托管WCF服务,并由MVC应用程序使用其服务,这与您必须单独托管WebAPI项目并为Web应用程序(MVC)提供服务完全相同。

出于某些原因,如果您希望它们(MVC和WebAPI)在同一项目中使用,请遵循本文中的规则。

http://odetocode.com/blogs/scott/archive/2013/07/01/on-the-coexistence-of-asp-net-mvc-and-webapi.aspx

我昨天刚做了同样的事情。我在同一个MVC 4项目中有常规控制器和ApiControllers。

您需要在WebApi:的Global Asax中添加路由

WebApiConfig.Register(GlobalConfiguration.Configuration);

查看WebApiConfig:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

别忘了为WebApi添加Nuget软件包(如果你还没有的话)。在我的情况下,我没有它们,因为我的项目最初是MVC 3,后来升级了。

您只需要将路由和API控制器添加到现有的MVC站点,在那里它们都可以在site/api/ 下使用