2013-06-25 48 views
1

我有一个引用第三方DLL的.NET 4.0应用程序,它显然不支持4.0。在配置文件中使用useLegacyV2RuntimeActivationPolicy =“true”可在本地运行时运行,但在IIS 7.5服务器上运行时不会运行。.net useLegacyV2RuntimeActivationPolicy在IIS 7.5中不起作用

的第三方软件是http://crystal-decisions-inc.software.informer.com/,DLL的:

  • CrystalDecisions.CrystalReports.Engine
  • CrystalDecisions.ReportSource
  • CrystalDecisions.Shared

本地机和Web服务器有安装了相同的Crystal Reports运行时CRRuntime_32bit_13_0_5.msi。

我的本地应用程序正在运行使用测试项目,这是一个Windows窗体应用程序。在App.config,它的工作原理时,这包括:

<configuration> 
    ... 
    <startup useLegacyV2RuntimeActivationPolicy="true" > 
    </startup> 
</configuration> 

如果不包括,本地代码导致该异常:

“无法加载文件或程序集“C:\ Program Files文件( x86)\ SAP BusinessObjects \ Crystal Reports for .NET Framework 4.0 \ Common \ SAP BusinessObjects Enterprise XI 4.0 \ win32_x86 \ dotnet1 \ crdb_adoplus.dll'或它的某个依赖项,系统找不到指定的文件。

当我添加相同<启动>标签到Web.config的网站,它似乎没有任何区别是否存在或不存在。当这行代码被击中时,代码就会死掉;它不会抛出任何托管异常。

Google搜索的帮助,所有的页面基本上声明添加的配置设置固定它对于他们来说,通常引用这或有轻微的变体:

<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
</startup> 

但这并没有为我的应用程序。由于我无法从Web应用程序中获得实际的错误,因此我很遗憾下一步要去哪,帮助表示感谢。

回答

1

由于没有人回答,我只会投入我的五美分。

useLegacyV2RuntimeActivationPolicy允许包含.NET 2.0之前的“怪异”(通常涉及混合程序集)。但它是以牺牲并列执行为代价的。

我认为你还没有找到正确的入口位置。不要混淆App.Config文件的Web.Config。 Web.Config服务于另一个完全不同的目的。我假设你需要找到可执行文件的App.Config文件。

(用是否IIS将积极响应此设置,我不知道。)

+0

我现在觉得这是关键,它是应用程序配置不web.config中;等待标记为答案,直到我们实际得到这个工作。我认为它可能实际上是aspnet.config文件... – Abacus

+0

或IIS的可执行文件的app.config。想想看,你可以使用这个找到正确的配置文件:AppDomain.CurrentDomain.SetupInformation.ConfigurationFile – Tormod