2014-10-26 95 views
3

我一直試圖沒有成功獲得ASP Web API/Autofac集成工作。我創建了一個簡單的項目,其中一個Controller返回一個字符串,並且能夠成功運行應用程序。然而,當我融入到Autofac解決方案,在運行時我收到System.EntryPointNotFoundException: Entry point was not found.ASP Web API和Autofac集成異常

  • 的Visual Studio Pro的2013
  • .NET 4.5

這裏是包含在項目庫中的版本,當我創建它在我的機器上(不包括Autofac庫)。我從Nuget獲得Autofac庫,所有其他庫都在本地安裝。

  • 的System.Web 4.0
  • System.Web.Extensions程序4.0
  • System.Web.Http 5.0
  • System.Web.Http.WebHost 5.0
  • System.Web.Services 4.0
  • Autofac 3.0 /說明說3.1.5
  • Autofac.Integration.WebApi 3.0 /描述說3.1

我把Autofac代碼在我的註冊方法是這樣的:

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     //Other code left out for brevity 

     var builder = new ContainerBuilder(); 
     builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); 

     // Set the dependency resolver to be Autofac. 
     var container = builder.Build(); 
     config.DependencyResolver = new AutofacWebApiDependencyResolver(container); 
    } 
} 

我收到EntryPointNotFoundException在Application_Start方法:

public class WebApiApplication : System.Web.HttpApplication 
{ 
    protected void Application_Start() 
    { 
     GlobalConfiguration.Configure(WebApiConfig.Register); 
    } 
} 

於是我通過的NuGet和升級ALL包得到這些版本:

  • System.Web 4.0
  • System.Web.Extensions程序4.0
  • System.Web.Http 5.2.2
  • System.Web.Http.WebHost 5.2.2
  • System.Web.Services 4.0
  • Autofac 3.5 /描述說:3.5 0.2
  • Autofac.Integration.WebApi 3.0 /描述說3.1.0

這個片段就是現在插入到web.config文件:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Autofac" publicKeyToken="17863af14b0044da" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.5.0.0" newVersion="3.5.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

當我再次運行應用程序,我仍然收到System.EntryPointNotFoundException: Entry point was not found.

缺少什麼我在這裏得到Autofac和Web API很好地一起玩?

謝謝,凱爾

+0

你如何舉辦的applcation?在IIS中還是使用IIS Express?你可以在新創建的項目中重現這個錯誤嗎?我只能找到一個有點相關的文章:http://www.aaron-powell.com/posts/2010-04-08-problems-with-assembly-trust.html – nemesv 2014-10-26 16:50:11

回答

5

我想通了這個問題。您需要確保Autofac的版本與Web API的版本兼容。在我的情況下,我使用的是Web API 2.2庫,但Autofac版本標記爲Autofac ASP。NET Web API集成。一旦我切換到Autofac ASP.NET Web API 2.2集成,然後我的解決方案工作。毫無疑問,容易假設你使用的是正確的版本。

凱爾

enter image description here

+0

類似的問題,但相同的答案。我沒有使用WebApi(只是常規的MVC),但是由於'Autofac.Mvc5'的版本太新了(或者什麼),它與我安裝的'Autofac'軟件包的版本不兼容。舊的'Autofac'和'Autofac.Mvc5':3.4.0和3.3.4。解決問題的新版本分別爲3.5.2和3.3.4。 – 2015-06-05 00:40:07