De repente, mi sitio web no se carga y me da el siguiente error. Estoy ejecutando VS2017 con .Net Framework 4.7.1 en Windows 10 Home.
[BadImageFormatException: Cannot load a reference assembly for execution.] [BadImageFormatException: Could not load file or assembly 'System.IO.Compression.ZipFile' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)] System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +225 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +110 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +22 System.Reflection.Assembly.Load(String assemblyString) +34 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +48 [ConfigurationErrorsException: Could not load file or assembly 'System.IO.Compression.ZipFile' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)] System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +729 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +247 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +157 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +226 System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +73 System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +321 System.Web.Compilation.BuildManager.ExecutePreAppStart() +170 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +734 [HttpException (0x80004005): Could not load file or assembly 'System.IO.Compression.ZipFile' or one of its dependencies. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +525 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +118 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +708¿Alguna sugerencia?
Hay un problema conocido con .NET Framework 4.7.1 a este respecto . Supuestamente ordenado en 4.7.2, pero mientras tanto, ¿qué puedes hacer?
El problema está relacionado con los ensamblajes de serialización, que puede configurar opcionalmente para generar o no como parte de su compilación (haga clic en proyecto -> Propiedades -> pestaña Generar -> consulte 'Generar ensamblajes de serialización' en la parte inferior).
Lo que funcionó para mí, y estoy parado sobre los hombros de otros en parte aquí, es asegurarme de que esta configuración esté configurada en 'Auto'. Haga una 'solución limpia' completa y, además, si está paranoico, este fragmento de PowerShell es útil si se ejecuta en la carpeta raíz de su solución:
Get-ChildItem .\ -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
A continuación, agregue los siguientes objetivos a su csproj (justo dentro de la etiqueta adjunta <Project> :
<Target Name="RemoveDesignTimeFacadesBeforeSGen" BeforeTargets="GenerateSerializationAssemblies"> <ItemGroup> <ReferencePath Remove="@(_DesignTimeFacadeAssemblies_Names->'%(OriginalIdentity)')" /> </ItemGroup> <Message Importance="normal" Text="Removing DesignTimeFacades from ReferencePath before running SGen." /> </Target> <Target Name="ReAddDesignTimeFacadesBeforeSGen" AfterTargets="GenerateSerializationAssemblies"> <ItemGroup> <ReferencePath Include="@(_DesignTimeFacadeAssemblies_Names->'%(OriginalIdentity)')" /> </ItemGroup> <Message Importance="normal" Text="Adding back DesignTimeFacades from ReferencePath now that SGen has run." /> </Target>Si aún no tiene suerte, establezca explícitamente 'Generar conjuntos de serialización' en 'Activado' para forzar la generación, y reconstruir y ejecutar.
Lo que funcionó para mí fue eliminar los directorios bin y obj en mi aplicación web y luego reconstruir.
Hoy instalé Acumatica 2018 R1 y me encontré con este problema. Eliminar System.IO.Compression.ZipFile de la carpeta bin solucionó el problema.
Tengo algunas investigaciones sobre el error.
Como podemos ver en el error, cuando nos referimos a proyectos basados en SOAP en proyectos Aspnetcore, no podemos usarlos directamente. Esto se debe a la implementación de la plataforma Aspnetcore.
Se puede cargar usando la reflexión . Sin embargo, nos permite usar tipos internos de forma dinámica. Es posible que se publique soporte en versiones posteriores de Aspnetcore para ensamblaje de jabón con licencia , etc.
Eliminar la carpeta bin, etc. es una solución cuando las versiones dll son diferentes X86 o 64, etc. El problema real es la implementación del protocolo SOAP, WebSocket, Proxy, etc. No se pueden usar directamente con el proyecto Aspnetcore. Hay proyectos de parches para eso en github
También enfrenté este problema varias veces. Este error puede causar por referencia o problema de carga de dll en su carpeta bin. simplemente elimine la carpeta .bin y reconstruya su aplicación. Funcionará.
Codificación feliz.