我在 Web 应用程序中遇到了一个非常奇怪的问题。我有一个标记为平台目标的“任何 CPU”的应用程序,但是当我通过 IIS 运行它时,我得到以下信息:
无法加载文件或程序集 'file:///C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\ea146e97\e5f133b2\App_Code.dsbuukid.dll' 或其依赖项之一. 试图加载格式不正确的程序。
看起来这个问题是由于那个 dll 在 32 位模式下编译的,而我的 IIS 服务器只有 64 位。我已经通过在该戴尔上运行 corflags.exe 工具并获得以下信息来确认这一点:
Microsoft (R) .NET Framework CorFlags 转换工具。版本 4.0.30319.17929 版权所有 (c) Microsoft Corporation。版权所有。
版本:v4.0.30319 CLR 标头:2.5 PE:PE32 CorFlags:0x3 ILONLY:1 32BITREQ:1 32BITPREF:0 签名:0
我可以通过将工作进程设置为允许 32 位应用程序来解决这个问题,但我更愿意解决这个问题并允许应用程序在 64 位模式下运行。
我已经尝试多次删除我的临时文件以及重新启动机器和 iis 数百次,但每次 dll 都以 32 位模式编译。
有谁知道这是怎么回事?app_code 编译过程由什么负责?