2014-01-06 47 views
0

我剛剛瞭解Web API內存中的主機,這對我來說是新東西。我下載Web API自託管nuget包,並配置Routing for Web API並將Web API項目引用到In Memory託管項目中。一切正常,但我不知道我的Web API項目中的內存如何識別任何控制器類。有沒有人可以向我解釋這件事?web內存託管如何加載我們的控制器類?


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); 
    } 

回答

0

基本上在網頁API爲控制器探測到發生具有控制器的組件應該被加載到存儲器中。在你的情況下,如果你的控制器被定義在與你的內存測試相同的程序集中,那麼程序集將被掃描所有類型的實現System.Web.Http.Controllers.IHttpController

如果您的控制器在與您的測試不同的部件中定義,那麼您可能需要執行其他操作以確保將該部件加載到內存中。一個例子是創建一個自定義IAssembliesResolver類似於下面的示例中:

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

+0

謝謝您的回答基蘭,我想我需要創建簡單的項目,以獲得更多的理解來創建自定義IAssembliesResolver。 – tanto

相關問題