如何解决“%1 不是有效的 Win32 应用程序”?
-
06-07-2019 - |
题
环境:
Windows Server 2003 R2 企业版 64 位,SP2
据称已安装 .NET Framework(2.0 SP2、3.0 SP2、3.5 SP1)
我说“据说”是因为它们被列为已安装在“添加/删除程序”下。我不确定是不是 适当地 已安装,因为“ASP.NET”选项卡未添加到 IIS 中的任何站点。
在 IIS Web 服务扩展部分,我有“ASP.NET v2.0.50727”(允许)和“ASP.NET v2.0.50727(32 位)”(禁止)。
相关站点已启用脚本执行。
问题:
我创建了一个超级简单的 ASP.NET/C# 网站:Default.aspx 的标签 id="Label1" 和代码隐藏: Label1.text = "Hello World";
我得到的错误是:
%1 不是有效的 Win32 应用程序。
解决方案
你试过跑步吗?
aspnet_regiis -i
从命令行?
其他提示
同时检查您的应用程序池。在64位环境中,您可能需要设置“启用32位应用程序”。在高级设置中。
我有“%1不是有效的Win32应用程序。”错误消息,因为我的PATH环境变量也搞砸了。它包含来自python安装的垃圾:
%PYTHON_HOME%;
%PYTHON_HOME%\Scripts;
我在 Windows Server 2008 64 位上的 IIS7 上也遇到了类似的错误。
融合日志在这里没有任何帮助,事实证明,在我的例子中,有一个第三方程序集引用了仅 32 位的程序集或本机 dll。(更准确地说)
要查找 64 位运行时正在加载哪个程序集:
- 连接VS2008调试器 w3wp.exe 与您的应用程序池匹配的进程
- 拦截所有异常(菜单“调试/异常/检查所有”)公共语言运行时异常").
- 确保您的应用程序已完全重新加载(例如,通过修改 web.config)。
- 当。。。的时候 系统BadImageFormatException 引发异常,在堆栈跟踪查看器窗口中查找程序集名称。
请记住,放置在 bin 目录中的所有程序集都会被加载,无论它们在应用程序中的实际含义如何。
我有“%1不是有效的Win32应用程序。”错误消息,因为我的PATH环境变量搞砸了。嗯,更具体地说,PATH本身没有任何问题。相反,我不小心创建了一个名为“C:\ Program”的文件。用来代替“C:\ Program Files \”用于路径查找。 意外创建“C:\ Program”是在C:\ Program Files \ test.txt(没有引号)的命令行上调用Notepad ++的结果,所以Notepad ++认为我正在尝试编辑一个名为“C:\ Program”的文件。并为我创建了该文件。
我有这个问题。我将.EXE部署到不支持.NET 4.5的Windows 2003。我使用.NET 4重建了程序并且它运行良好。