添加Web API控制器,​​以不同的装配控制器、不同、Web、API

2023-09-03 13:43:01 作者:热泪都为你

我如何添加Web API控制器到不同的组件? 我想在Web API控制器从我的MVC应用程序中分离出来。

How can I add Web Api Controller to a different assembly? I want to separate the web API controllers from my MVC application.

推荐答案

的WebAPI做开箱。

WebApi does that out the box.

该DefaultAssembliesResolver类是用来加载组件,以寻找ApiControllers之一。这里是源$ C ​​$ C:

The DefaultAssembliesResolver class is the one used to load the assemblies to look for ApiControllers. Here is the source code:

  public class DefaultAssembliesResolver : IAssembliesResolver {    
    public virtual ICollection<Assembly> GetAssemblies() {
      return AppDomain.CurrentDomain.GetAssemblies().ToList();
    }
  }

诀窍就是一个web.api服务的第一次调用之前,你的程序集加载到AppDomain中。

The trick is to load your assembly to the AppDomain before the first call to a web.api service.

调用类的任何方法在目标装配或简单地从它加载一个类型。例如:

Call any method of a class in the target assembly or simply load a type from it. Ex:

var x = typeof (YourApiControllerInAnotherAssembly);

如果您正在使用的WebAPI的是旧版本,尝试实施IAssembliesResolver,改变它的默认实现是这样的:

If you're using an older version of WebApi, try implementing IAssembliesResolver and changing the default implementation of it like this:

GlobalConfiguration.Configuration.Services.Replace(typeof(IAssembliesResolver), 
                                                   new YourCustomAssemblyResolver());