2015-03-05 9 views
7

Ho un semplice progetto che utilizza Microsoft.AspNet.WebApi.OwinSelfHost. Si tratta di un progetto project.The WebAPI 2 Owin self hosted è più o meno simile a: -Errore Autofac: impossibile caricare il file o l'assembly 'System.Web.Http, Versione = 5.2.0.0, ...' Il mio progetto è Owin WebApi2 SelfHost

https://github.com/attilah/AngularJSAuthentication

L'unica differenza che ho è il mio modulo di sicurezza è in separato Assembly (tutto simile al precedente progetto). Io uso Autofac per risolvere le mie dipendenze.

Questo progetto ha funzionato quando non c'è Autofac. Ma una volta che sto cercando di impostare il mio progetto con i moduli di sicurezza corrispondenti e Autofac tutto quello che sto affrontando è questo errore: -

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) 

La mia configurazione è molto ispirato da questa discussione: -

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

Inoltre, ho trovato qualcun altro ha lottato con questa dipendenza bug di Autofac ed è stato in grado di ottenere problema analogo risolto reinstallando Microsoft.AspNet.WebApi.WebHost:

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

Ma questo non funziona per me, non so perché. Ho provato a reinstallare tutto da zero anche non aiuta. Oltre al fatto che Autofac ha diversi problemi di autorizzazione durante la reinstallazione.

Qualcuno ha qualche esperienza con questo errore? per favore aiuto. Grazie!

risposta

19

Sono riuscito a risolvere questo problema di dipendenza con l'aiuto del commento di @ user998660 in above thread.

Quello che ho fatto è:

  • ho ragione cliccato l'assemblea System.Web.Http nei riferimenti del mio progetto.
  • ho notato che la versione di assembly a cui fa riferimento il mio progetto è 5.2.3.0
  • Dal errore di cui sopra so che Autofac tenta di fare riferimento System.Web.Http versione 5.2.0.0. Avevo bisogno di un mezzo per dire alla mia app di utilizzare la versione più recente 5.2.3.0 anziché 5.2.0.0.

Questo è quello che avevo bisogno di aggiungere alla <assemblyBinding> sezione del mio web.config:

<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

Posso confermare che ha risolto il problema anche per me – superlogical

+0

questo mi ha aiutato pure. avresti dovuto contrassegnarlo come risposta. – jerbersoft

+0

Tutto quello che dovevo fare era aggiornare l'elemento '' a ciò che @amitthk ha pubblicato. Grazie! – danyim

0

aperto gestito pacchetti NuGet per soluzione, e installare l'ultima API Web Microsoft Asp.net 2.2 e che ha risolto il mio problema.

0

Alcune volte, il ripristino di .nuget può causare un problema. Tuttavia, una volta completato il check-in, l'impostazione disableSourceControlIntegration su false nel file .nuget.config risolverà il problema. add key = "disableSourceControlIntegration" value = "false"

Problemi correlati