Voici l'erreur que je reçois lorsque j'exécute mon application (.NET 4.5):
Server Error in '/' Application.
Could not load file or Assembly 'Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.IO.FileNotFoundException: Could not load file or Assembly 'Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the Origin and location of the exception can be identified using the exception stack trace below.
Assembly Load Trace: The following information can be helpful to determine why the Assembly 'Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' could not be loaded.
=== Pre-bind state information ===
LOG: DisplayName = Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
(Fully-specified)
LOG: Appbase = file:///C:/Users/Austin/Documents/FileStore/FileStore.Web/
LOG: Initial PrivatePath = C:\Users\Austin\Documents\FileStore\FileStore.Web\bin
Calling Assembly : Chicago.Security, Version=1.0.5826.21195, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Users\Austin\Documents\FileStore\FileStore.Web\web.config
LOG: Using Host configuration file: C:\Users\Austin\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Redirect found in application configuration file: 1.3.0.0 redirected to 1.3.0.0.
LOG: Post-policy reference: Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: The same bind was seen before, and was failed with hr = 0x80070002.
Stack Trace:
[FileNotFoundException: Could not load file or Assembly 'Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.]
Chicago.Security.AuthenticationModule.application_AuthenticateRequest(Object sender, EventArgs e) +0
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +141
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69
J'ai installé le paquet de nuget CommonServiceLocator, mais je reçois toujours cette erreur. Ce qui est étrange, c’est qu’il existe une redirection de liaison d’Assemblée dans mon fichier web.config, mais l’Assemblée ne figure pas dans la liste de références de mon projet et je ne le trouve nulle part où l’ajouter. Je suis encore relativement nouveau sur ASP.NET et je n'arrive donc pas à cerner exactement le problème. Une autre chose que j'ai trouvée pour essayer consiste à définir 'Activer les applications 32 bits' sur true pour mon pool d'applications dans le gestionnaire IIS, mais cela n'a pas résolu mon problème. Cela fait un moment que je suis coincé là-dessus, toute aide serait la bienvenue.
Après des heures de recherche et d’essais, la désinstallation et la réinstallation de CommonServiceLocator de Nuget semblaient bien fonctionner. Je suis toujours étonné de voir à quel point les applications .NET sont désordonnées avec leurs dépendances.
Assurez-vous que vous avez installé la version 1.3.0 et non une version différente.
Lien Nuget: https://www.nuget.org/packages/CommonServiceLocator/1.3.0
Je recevais cette erreur parce que j'utilisais la nouvelle syntaxe de C # 7.0 dans une version antérieure. Une fois que je suis revenu à l'ancienne syntaxe, cela a été résolu.
Plus précisément, j'utilisais: -
// Newer syntax.
if (int.TryParse(args.Value, out var value))
{
args.IsValid = value > 0;
}
// Older supported version which resolved the issue.
int value;
if (int.TryParse(args.Value, out value))
{
args.IsValid = value > 0;
}
J'avais ouvert une solution VS2015 dans VS2017 et trouvé des références manquantes, sans savoir pourquoi.
Générez d'abord votre projet pour obtenir une liste des références manquantes (indiquant les numéros de version). Ouvrez ensuite le gestionnaire de packages NUGET pour la solution et réinstallez-le simplement. Remarque: il existe des chaînes de dépendance à l'ordre d'installation. Si une installation échoue, recherchez la pré-requête. Dépendance et installation en premier, puis réessayez. Cela prend environ 10 minutes pour corriger.
Ouvrez VS -> Outils -> Gestionnaire de paquets Nuget -> Console du gestionnaire de paquets
>PM Install-Package CommonServiceLocator
Cela devrait aider!