2015-03-05 10 views
7

Mam prosty projekt, który korzysta z Microsoft.AspNet.WebApi.OwinSelfHost. Jest to Owin własnym gospodarzem WebAPI 2 Projekt project.The jest prawie podobna do: -Błąd autofaku: Nie można załadować pliku lub zespołu "System.Web.Http, Version = 5.2.0.0, ..." Mój projekt to Owin WebApi2 SelfHost

https://github.com/attilah/AngularJSAuthentication

Jedyną różnicą mam jest mój moduł zabezpieczający jest w osobnej Assembly (wszystko podobny do powyższego projektu). Używam Autofac do rozwiązywania moich zależności.

Ten projekt działał, gdy nie było autofaca. Ale gdy próbuję skonfigurować mojego projektu z odpowiednimi modułami bezpieczeństwa i Autofac wszystko jestem stoi to jest błąd: -

Could not load file or assembly 'System.Web.Http, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 

Moja konfiguracja jest bardzo wiele inspiracji z tego wątku: -

Dependency injection not working with Owin self-hosted Web Api 2 and Autofac

Ponadto znalazłem ktoś zmagał się z tej zależności bug z Autofac i był w stanie uzyskać podobny problem rozwiązany poprzez ponowne zainstalowanie Microsoft.AspNet.WebApi.WebHost:

GlobalConfiguration.Configure() not present after Web API 2 and .NET 4.5.1 migration

Ale to nie działa dla mnie Nie wiem dlaczego. Próbowałem ponownie zainstalować wszystko od zera również nie pomaga. Poza tym, że Autofac ma kilka problemów z uprawnieniami podczas ponownego instalowania.

Ktoś ma jakieś doświadczenie z tym błędem? proszę pomóż. Dzięki!

Odpowiedz

19

Udało mi się rozwiązać ten problem z zależnością za pomocą komentarza @ user998660 w above thread.

Co zrobiłem to:

  • mam rację kliknięciu zespół System.Web.Http w odnośnikach mojego projektu.
  • zauważyłem, że wersja zespołu odwołuje mojego projektu jest 5.2.3.0
  • Z błędu powyżej wiem, że Autofac próbuje odwoływać System.Web.Http wersję 5.2.0.0. Potrzebowałem środka, aby powiedzieć mojej aplikacji, aby korzystała z nowszej wersji 5.2.3.0 zamiast 5.2.0.0.

To jest to, co potrzebne, aby dodać do mojego web.config za <assemblyBinding> odcinku:

<dependentAssembly> 
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" /> 
    <bindingRedirect oldVersion="0.0.0.0-5.2.0.0" newVersion="5.2.3.0" /> 
    </dependentAssembly> 
+0

Mogę potwierdzić, że naprawiono problem dla mnie też – superlogical

+0

to pomogło mi również. powinieneś oznaczyć to jako odpowiedź. – jerbersoft

+0

Wszystko, co musiałem zrobić, to zaktualizować element '' do tego, co napisał @amitthk. Dzięki! – danyim

0

Otwarty zarządzany pakiety Nuget do sporządzania roztworu i zainstalować najnowszą Microsoft ASP.NET Web API 2.2 i rozwiązać mój problem.

0

Czasami przywracanie .nuget może powodować problem. Jednak po pomyślnym sprawdzeniu, ustawienie disableSourceControlIntegration na false w pliku .nuget.config rozwiązałoby ten problem. dodaj klucz = "disableSourceControlIntegration" value = "false"

Powiązane problemy