2015-04-25 40 views
0

我正在使用用於管理依賴注入的Web API 2項目的StructureMap.WebApi2 nuget包。 Web API控制器使用構造函數注入來注入應該由StructureMap Ioc解析的UrlHelper依賴項。 我嘗試以下辦法來設置UrlHelper的Web API控制器:如何在Web API 2中使用StructureMap.WebApi2注入UrlHelper nuget包

public class FooController : ApiController 
{ 
    private UrlHelper _UrlHelper; 

    public ModelFactory(HttpRequestMessage request) 
     { 
      _UrlHelper = new UrlHelper(request); 
      } 
} 

但與上面的代碼我收到以下錯誤:

沒有默認實例註冊並不能自動確定鍵入'System.Net.Http.HttpMethod'沒有配置爲System.Net.Http.Http指定方法

任何人都可以建議我解決上述問題的最佳方法嗎?

回答

0

你的問題是,StructureMap首先嚐試解決貪婪的構造,在這種情況下taking a look at the source codeHttpRequestMessage揭示了下面的構造函數:

public HttpRequestMessage(HttpMethod method, string requestUri); 
public HttpRequestMessage(HttpMethod method, Uri requestUri); 

這是你的HttpMethod問題的來源。 StructureMap嘗試創建HttpRequestMessage的實例,但不知道如何解決methodrequestUri依賴關係。

在這種情況下,你需要手動配置StructureMap配置中的依賴關係,因此它知道如何創建的HttpRequestMessage一個實例,像這樣:

this.For<HttpRequestMessage>().Use(new HttpRequestMessage());

或者,創造重載構造情況,那麼你需要手動解決重載的依賴關係(爲了保持SM配置的清潔,我建議使用一個工廠,Here is an example of how you can do this)。

相關問題