繁体   English   中英

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

[英]MVC & Web Api projects within same Solution

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

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

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

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

谢谢。

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

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

您需要在 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,后来升级了。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM