我现在刚刚了解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