Hoe los ik “%1 is geen geldige Win32-toepassing” op?

Omgeving:
Windows Server 2003 R2 Enterprise 64bit, SP2
.NET framework is zogenaamd geïnstalleerd (2.0 SP2, 3.0 SP2, 3.5 SP1)

Ik zeg “vermoedelijk” omdat ze worden vermeld als geïnstalleerd onder Programma’s toevoegen/verwijderen. Ik weet niet zeker of het goedis geïnstalleerd, omdat het tabblad “ASP.NET” niet is toegevoegd aan een van de sites in IIS.

In het gedeelte IIS-webservice-extensies heb ik zowel “ASP.NET v2.0.50727” (toegestaan) als “ASP.NET v2.0.50727 (32-bit)” (verboden).

Voor de betreffende site is scriptuitvoeren ingeschakeld.

Probleem:

Ik heb een supereenvoudige ASP.NET/C#-website gemaakt: Default.aspx met een label id=”Label1″ en een code-behind met: Label1.text = "Hello World";en de foutmelding die ik krijg is:

%1 is geen geldige Win32-toepassing.


Antwoord 1, autoriteit 100%

Heb je geprobeerd te rennen:

aspnet_regiis -i

vanaf de opdrachtregel?


Antwoord 2, autoriteit 60%

Controleer ook uw applicatiepool. In een 64-bits omgeving moet u mogelijk “Enable 32-bit applications” instellen in Geavanceerde instellingen.


Antwoord 3, autoriteit 30%

Ik kreeg de melding “%1 is geen geldige Win32-toepassing.” foutmelding omdat mijn PATH-omgevingsvariabele ook in de war was. Het bevatte deze rommel van een python-installatie:

%PYTHON_HOME%;
%PYTHON_HOME%\Scripts;

Antwoord 4, autoriteit 20%

Ik kreeg de melding “%1 is geen geldige Win32-toepassing.” foutmelding omdat mijn PATH-omgevingsvariabele in de war was. Nou, meer specifiek, het PATH zelf had er niets mis mee. In plaats daarvan had ik per ongeluk een bestand gemaakt met de naam “C:\Program” dat werd gebruikt in plaats van “C:\Program Files\” voor het opzoeken van paden.
Het per ongeluk maken van “C:\Program” was het resultaat van het aanroepen van Notepad++ op de opdrachtregel voor C:\Program Files\test.txt (zonder aanhalingstekens), dus Notepad++ dacht dat ik een bestand probeerde te bewerken met de naam “C: \Program” en heb het bestand voor mij aangemaakt.


Antwoord 5, autoriteit 10%

Ik had een soortgelijke fout met IIS7 op Windows Server 2008 64 Bits.

Het fusielogboek helpt hier niet, en het bleek dat er in mijn geval een assembly van een derde partij was die verwees naar een 32-bits assembly of native dll. (Xceed om precies te zijn)

Zoeken welke assembly wordt geladen door de 64 bits runtime:

  • Voeg de VS2008-foutopsporing toe aan het w3wp.exe-proces dat overeenkomt met uw groep van toepassingen
  • Alle uitzonderingen onderscheppen (Menu Debug / Uitzonderingen / vink alle “Common Language Runtime Exceptions” aan).
  • Zorg ervoor dat uw applicatie volledig opnieuw wordt geladen (bijvoorbeeld door web.config aan te passen).
  • Als de uitzondering System.BadImageFormatExceptionwordt gegenereerd, zoek dan naar een assembly-naam in het viewervenster voor stacktracering.

Onthoud dat alle assembly’s die in de bin-directory zijn geplaatst, worden geladen, ongeacht hun daadwerkelijke implicatie in de toepassing.


Antwoord 6, autoriteit 10%

Ik had dit probleem. Ik heb een .EXE geïmplementeerd in een Windows 2003 die .NET 4.5 niet ondersteunt. Ik heb het programma opnieuw opgebouwd met .NET 4 en het werkte.

Other episodes