在Windows-7 64位上使用IIS 7.5引用wcf-ria服务类库中的外部库时出错

时间:2012-01-09 18:44:58

标签: iis dll silverlight-4.0 iis-7 wcf-ria-services

创建我的Silverlight 4.0应用程序我已经从Visual Studio 2010中的模板“业务应用程序”开始。然后我添加了一个项目WCF-RIA类库,我在主ASP.Net项目中引用了它。然后在项目WCF-RIA中,我添加了对我的协作者创建的外部.DLL的引用,从中我获取了数据。

问题在于:当我使用Visual Studio Development Server(Cassini)执行我的应用程序时,一切都很好。当我尝试在IIS(我的Windows-7 64位上的Ver.7.5)上执行应用程序时,我得到一个由外部.DLL引用引起的错误(事实上,如果我删除.DLL一切都有效)。

我的应用程序必须按原样配置,然后我问:问题是什么,(特别是)我该如何解决?

非常感谢你!

Pileggi

这是错误:

'/ MyApp'应用程序中的服务器错误。


无法加载文件或程序集“MyLibrary”或其依赖项之一。 Tentativo di caricare un programma con un formato non corretto。  描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

异常详细信息:System.BadImageFormatException:无法加载文件或程序集“MyLibrary”或其依赖项之一。 Tentativo di caricare un programma con un formato non corretto。

来源错误:

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

程序集加载跟踪:以下信息有助于确定无法加载程序集“MyLibrary”的原因。

警告:装配绑定日志记录已关闭。  要启用程序集绑定失败日志记录,请将注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1。  注意:程序集绑定失败日志记录会导致一些性能损失。  要关闭此功能,请删除注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。

堆栈追踪:

[BadImageFormatException:无法加载文件或程序集“MyLibrary”或其依赖项之一。 Tentativo di caricare un programma con un formato non corretto。]     System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark& stackMark,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)+0     System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,Evidence assemblySecurity,StackCrawlMark& stackMark,Boolean forIntrospection,Boolean suppressSecurityChecks)+567     System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString,Evidence assemblySecurity,StackCrawlMark& stackMark,Boolean forIntrospection)+192     System.Reflection.Assembly.Load(String assemblyString)+35     System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName,Boolean starDirective)+147

[ConfigurationErrorsException:无法加载文件或程序集“MyLibrary”或其依赖项之一。 Tentativo di caricare un programma con un formato non corretto。]     System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName,Boolean starDirective)+1298     System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()+ 430     System.Web.Configuration.AssemblyInfo.get_AssemblyInternal()+ 104     System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)+334     System.Web.Compilation.BuildManager.CallPreStartInitMethods()+264     System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager,IApplicationHost appHost,IConfigMapPathFactory configMapPathFactory,HostingEnvironmentParameters hostingParameters,PolicyLevel policyLevel,Exception appDomainCreationException)+1021

[HttpException(0x80004005):无法加载文件或程序集“MyLibrary”或其依赖项之一。 Tentativo di caricare un programma con un formato non corretto。]     System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+646     System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+141     System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context)+771


版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.1

1 个答案:

答案 0 :(得分:0)

好的,我发现,问题是DLL是为32位系统而构建的,默认情况下,IIS只允许为操作系统的同一个cpu构建的文件(我的是64位)。要解决,有两个选项:为64位cpu重新构建DLL或更改应用程序池的属性“允许32位应用程序”。