Ho un'applicazione legacy ASP.NET 4.0 in produzione da un po 'di tempo. Ora aggiungo funzionalità aggiuntive sotto forma di servizio WebAPI REST.Comportamento diverso quando si "esternalizzano" determinate impostazioni di configurazione in file esterni
Aggiungendo i pacchetti WebAPI Nuget anche aggiunto una voce nel mio web.config
configurazione della versione del pacchetto runtime NewtonSoft.Json:
Ora, dal momento che ho il mio config "compartementalized" , Volevo inserire questo in un file separato runtime.config
e facendolo riferimento al numero principale web.config
:
Quando faccio questo, improvvisamente la mia registrazione dei percorsi WebAPI in global.asax.cs
protected void Application_Start(object sender, EventArgs e)
{
...
// Route #1
GlobalConfiguration.Configuration.Routes.MapHttpRoute("Route1", "test/{list}/{check}", new { Controller = "Devices" });
...
}
fallisce con un'eccezione:
System.IO.FileLoadException è stata gestita dal codice utente
Messaggio = il file o l'assembly "Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed" oppure non è stato possibile trovare una dipendenza. Source = System.Net.Http.Formatting
FileName = Newtonsoft.Json, Version = 4.5.0.0, Culture = neutral, PublicKeyToken = 30ad4fe6b2a6aeed
A me, sembra come se il esteriorizzata runtime.config
non essere leggere allo stesso tempo del contenuto dello stesso web.config
...... il che è piuttosto sorprendente per me, mi sarei aspettato che l'intero web.config
compresi i file di "sub-config" esternalizzati venisse letto prima del codice in global.asax.cs
è in esecuzione ...
Eventuali approfondimenti? Non so nemmeno dove andare a cercare questo livello di informazioni dettagliate su MSDN ....
Sembra che tu non sia il primo - http://world.episerver.com/Blogs/Magnus-Rahl/Dates/2011/6/Todays-gotcha-configSource-on-the-runtime-section-element/ e https://social.msdn.microsoft.com/Forums/vstudio/en-US/7552df69-d3a0-49e4-b45f-0fa4972fa64c/assembly-version-redirect-doesnt-work-with-a-configsource-in-runtime? forum = CLR. Non sono sicuro se/dove è coperto su MSDN così. –
@AlexeiLevenkov: se lo aggiungi come risposta, lo accetto felicemente :-) –