Web API 内存中托管如何加载我们的控制器类



我现在刚刚了解Web API内存托管,这对我来说是新东西。我下载了 Web API 自托管 nuget 包,只需配置 Web API 的路由,并将 Web API 项目引用到内存中托管项目。一切正常,但我不知道内存中如何识别我的 Web API 项目中的任何控制器类。有没有人可以解释我这件事?


    private HttpServer _server;
    private string _url = "http://api.mydomain.com/";
    private HttpClient _client;
    public PortalWebApiInMemoryTest()
    {
        var config = new HttpConfiguration();
        config.Routes.MapHttpRoute(
            name: "Default",
            routeTemplate: "{controller}/{id}",
            defaults: new { id = RouteParameter.Optional });
        _server = new HttpServer(config);
        _client=new HttpClient(_server);
    }

基本上在Web API中,为了进行控制器探测,具有控制器的程序集应该加载到内存中。在您的情况下,如果控制器与内存中测试在同一程序集中定义,则将扫描程序集以查找实现 System.Web.Http.Controllers.IHttpController 的所有类型。

如果控制器是在与测试不同的程序集中定义的,则可能需要执行其他操作以确保将该程序集加载到内存中。例如,创建自定义IAssembliesResolver,如以下示例所示:

http://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/CustomAssemblyResolverSample/ReadMe.txt

相关内容

最新更新