我在尝试在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位上运行。该网站使用Delphi Prism创建,Delphi Prism在2008 Visual Studio Shell中运行。我用谷歌搜索和谷歌搜索谷歌,但没有。任何帮助非常感谢!
答案 0 :(得分:1)
将System.EnterpriseServices(C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG)添加到您的参考中将解决您的问题。
OR
从web.config中删除引用如果你没有使用它。
答案 1 :(得分:0)
请检查项目的参考资料。你参考System.EnterpriseServices吗? 如果没有看看machine.config文件。也许在那里引用程序集?
答案 2 :(得分:0)
您可以尝试删除对该DLL的引用,但Prism可能会将其放在那里是有原因的。有很多可能的原因。也许你已经指定了页面级事务支持,或者你正在使用COM互操作。您可以通过临时删除引用并执行完全重建来查看编译器抱怨的内容来确定原因。
无论是什么原因,如果您发现仍然需要该程序集,您只需要在正确的位置找到正确的程序集,以便IIS可以加载它。
尝试在Windows资源管理器中打开GAC。我没有运行Vista,所以如果你的步骤与我不同,请耐心等待。光滑START,然后键入c:\ windows \ assembly。您显然需要查看/管理此文件夹的权限。找到有问题的程序集并查看可用的版本。看起来.NET子系统试图将您的应用程序jit为64位,并且需要64位版本的此程序集。
如果您在GAC中没有看到相应的程序集(您可能会看到其他版本),那么可能会解释它。
我不确定解决方案,但我可能尝试的两件事是确保您的系统上有64位版本的DLL并尝试使用GACUtil / i将其安装到GAC中。您也可以尝试使用aspnet_regiis.exe -i为IIS重新配置ASP.Net。