无法加载文件或程序集“Microsoft.Expression.Encoder”

我将IIS 网站下托管的WCF服务库写入来自其他网站的服务器请求。 该服务有一个名为Encode的方法,用于对最终用户上传的video文件进行编码。 我使用以下程序集:

Microsoft.Expression.Encoder.Api2.dll,Microsoft.Expression.Encoder.dll,Microsoft.Expression.Encoder.Types.dll,Microsoft.Expression.Encoder.Utilities.dll,

我直接从控制台应用程序测试了编码function。 但是,当我通过IIS网站测试时,每当我调用encode方法时,总是会抛出错误。

{"Could not load file or assembly 'Microsoft.Expression.Encoder, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. An attempt was made to load a program with an incorrect format."} 

我检查了那些Dll是否在Assembly文件夹中,但它们不是,所以我将它们提交给GAC ,并且它们在GAC32中 。我不得不这样做,因为当我将WCF发布到IIS网站时 ,它将这些Dll写入bin文件夹和我无法添加服务参考。 当我从bin文件夹中删除这些Dll时,我只能添加服务引用。 将这些Dll复制到GAC。

我还阅读了一些表明DLL平台和正在运行的应用程序平台之间存在冲突的文章。 这意味着DLL是使用32位应用程序构建的,但正在运行的应用程序在64位应用程序等下运行。然后我尝试将平台和框架设置为32和4.0,但是正在运行的应用程序将抛出错误添加服务参考。

我很困惑,不知道问题的根源在哪里以及如何解决问题。

更新:这是我的应用程序池: 在此处输入图像描述

“尝试加载具有不正确格式的程序”,这部分是为您提供密钥,当您尝试在32位进程中使用x64程序集时会发生这种情况,因此,您的IIS设置为32位(默认情况下是这样,使用32位dll或更改IIS配置以64位模式运行

到目前为止,您可能已经找到了解决此问题的方法。 您的应用程序池无法加载32位dll,因为它以64位进程运行。 要解决此问题,请将应用程序池切换为32位进程。 更改此值后,运行issreset以确保该值保持不变。

在此处输入图像描述