0

尝试在 IIS 下查看我的网站时遇到奇怪的失败。如果我创建一个新的 ASP.Net 网站应用程序,根本不要修改它并运行它 (F5) 网页显示错误:

Compilation Error
Description: An error occurred during the compilation of a resource required to
service this request. Please review the following specific error details and modify
your source code appropriately.

Compiler Error Message: CE29: (CE29) Unable to load assembly C:\Windows\assembly\GAC_64
\System.EnterpriseServices\2.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll Not
a valid .NET executable (Offset and length were out of bounds for the array or count
is greater than the number of elements from index to the end of the source collection.)

它看起来像一个 .Net 配置问题,但我不知道如何解决它。我已经安装了 .Net 3.5 SP1 和 IIS 7.0,在 Vista Home Premium 64 位上运行。该网站是使用在 2008 Visual Studio Shell 中运行的 Delphi Prism 创建的。我用谷歌搜索和谷歌搜索,但什么也没有。非常感谢任何帮助!

4

3 回答 3

1

添加 System.EnterpriseServices(C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG) 到您的参考将解决您的问题。

或者

如果您不使用它,请从 web.config 中删除引用。

于 2009-11-20T13:53:59.897 回答
0

请检查您的项目的参考资料。你引用 System.EnterpriseServices 吗?如果没有,请查看 machine.config 文件。也许那里引用了程序集?

于 2009-11-20T13:46:41.863 回答
0

您可以尝试删除对该 DLL 的引用,但 Prism 将其放在那里可能是有原因的。有很多可能的原因。也许您已经指定了页面级事务支持,或者您正在使用 COM 互操作。您可以通过暂时删除引用并进行完全重建以查看编译器抱怨的内容来确定原因。

不管是什么原因,如果您发现仍然需要该程序集,您只需在正确的位置找到正确的程序集,以便 IIS 可以加载它。

尝试在 Windows 资源管理器中打开 GAC。我没有运行 Vista,如果您的步骤与我的不同,请多多包涵。滑动开始,然后键入 c:\windows\assembly。您显然需要查看/管理此文件夹的权限。找到有问题的程序集并查看可用的版本。看起来 .NET 子系统正在尝试将您的应用程序 jit 为 64 位,并且需要此程序集的 64 位版本。

如果您在 GAC 中没有看到适当的程序集(您可能会看到其他版本),那么这可能解释了它。

我不确定解决方案,但我可能会尝试两件事,即确保您的系统上某处有 64 位版本的 DLL,并尝试使用 GACUtil /i 将其安装到 GAC 中。您也可以尝试使用 aspnet_regiis.exe -i 为 IIS 重新配置 ASP.Net。

于 2010-01-14T22:37:08.457 回答