22

我有一个位于 N 层应用程序之上的 MVC 4 项目。我现在需要能够以编程方式使用应用程序。我在与 MVC 项目并排的同一解决方案中创建了一个新的 Web API 项目,同样位于 N 层应用程序之上。

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

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

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

谢谢。

4

3 回答 3

12

WebApi 是来自 Microsoft 的替代面向服务的应用程序,就像 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

于 2013-09-03T10:01:43.520 回答
8

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

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

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,后来升级了。

于 2013-09-03T10:01:32.660 回答
0

您只需将路由和 API 控制器添加到现有的 MVC 站点,它们都将在site/api/

于 2013-09-03T09:55:27.933 回答