【问题标题】:Asp.Net MVC Consuming a web api from a Class LibraryAsp.Net MVC 使用类库中的 web api
【发布时间】:2013-03-20 02:20:10
【问题描述】:

我想知道是否有办法创建一个包含 Web API 的类库,这样我就可以使用 dll 作为插件,注入到 MVC 应用程序中。

提前感谢您的帮助。

【问题讨论】:

标签: asp.net-mvc plugins asp.net-web-api class-library


【解决方案1】:

Web API 方法通过 HTTP 调用,因此调用 Web API 服务需要将其托管在某处并使用合适的客户端进行调用,如 @David's link 中所述。你可以self-host Web API,所以理论上你可以有一个MVC应用程序本地的程序集,它包含一个类,该类设置然后调用一个自托管的Web API服务。

您将在接口后面注入 Web API 服务,如下所示:

public interface IProductsService
{
    IEnumerable<Product> GetAllProducts();
}

...实现了这样的东西:

public class SelfHostedWebApiProductsService
{
    public SelfHostedWebApiProductsService()
    {
        // Set up a self-hosted Web API service
    }

    public IEnumerable<Product> GetAllProducts()
    {
        // Call your self-hosted WebApi to get the products
    }
}

Configure your DI containerSelfHostedWebApiProductsService 用于IProductsService 接口,然后就可以了。 This article 详细介绍了如何设置和调用自托管 Web API。

由于 SelfHostedWebApiProductsService 在其构造函数中设置自托管 Web API - 这是一项相对昂贵的操作 - 您可能需要考虑在 DI 容器中为此类提供单例生命周期。

【讨论】:

    【解决方案2】:

    您可以自托管 Web API: http://www.asp.net/web-api/overview/hosting-aspnet-web-api/self-host-a-web-api

    您可以将所有控制器放在一个类库项目中。

    然后使用 Autofac 解决宿主项目中的依赖关系: https://code.google.com/p/autofac/wiki/WebApiIntegration

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2012-09-05
      • 2014-05-27
      • 2019-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多