Asp.net mvc 在MVC控制器中使用Web Api

Asp.net mvc 在MVC控制器中使用Web Api,asp.net-mvc,asp.net-web-api,Asp.net Mvc,Asp.net Web Api,是否可以在MVC控制器中使用/调用我的Web API方法? 我有一个用于移动和其他平台的Web Api,我正在开发一个.NET Mvc网站。 这种架构有意义吗 谢谢是的,这是可能的,不过如果您希望使用来自多个不同客户端的API,我建议您将API创建为一个单独的应用程序,然后可以进行相应的管理/扩展 本质上,您指的是“狗食”您自己的API,使您自己的web应用程序与任何其他客户机没有区别 我们做了类似的事情,让MVC应用程序调用API(使用HttpClient)。在使用CORS直接调用API的同一

是否可以在MVC控制器中使用/调用我的Web API方法? 我有一个用于移动和其他平台的Web Api,我正在开发一个.NET Mvc网站。 这种架构有意义吗


谢谢

是的,这是可能的,不过如果您希望使用来自多个不同客户端的API,我建议您将API创建为一个单独的应用程序,然后可以进行相应的管理/扩展

本质上,您指的是“狗食”您自己的API,使您自己的web应用程序与任何其他客户机没有区别

我们做了类似的事情,让MVC应用程序调用API(使用
HttpClient
)。在使用CORS直接调用API的同一应用程序中,我们也有很多客户端代码


我们的这种架构已经在生产中运行了两年,没有任何问题。

以下是我如何从MVC控制器调用我的Web API控制器:

public class invoiceController : ApiController
    {
        private myEntities db = new db1Entities();

        // GET api/invoices
        public IQueryable<invoices> Getinvoices()
        {
            return db.invoices;
        }
}
public ActionResult ShowInvoices()
{
  var webApi = new invoicesController();
  //this must return strongly typed object
  var myarray = webApi.Getinvoices(); 
  return View(myarray);
}

一般来说,有两种方法可以做到这一点:要么使用Javscript从页面本身调用WebAPI方法,要么将这些方法的内部逻辑移动到一个单独的地方,在那里您的MVC控制器和WebAPI都可以随意调用。这不是一种好方法。如果您想在同一应用程序中的MVC和WebAPI之间共享逻辑,请将其移动到单独的类中;不要从MVC调用Web API控制器。