我不知道为什么我在运行我的应用程序(MVC 3)时会出现此错误。该项目引用了Microsoft. SQLServer. ManagedDTS。我安装了SQL Server 2008 R2和SQL Server 2012(都是Express)。我在此应用程序中使用2012。
“/”应用程序中的服务器错误。
未能加载文件或程序集“Microsoft.SqlServer.DTSRuntimeWrap”或它的某一个依赖项。试图加载格式不正确的程序。
说明:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误及其在代码中的起源位置的详细信息。
异常详细信息:System.BadImageFormatException:未能加载文件或程序集“Microsoft.SqlServer.DTSRuntimeWrap”或它的某一个依赖项。试图加载格式不正确的程序。
源错误:
在执行当前Web请求期间生成了未处理的异常。有关异常的来源和位置的信息可以使用下面的异常堆栈跟踪来标识。
组装件负载跟踪:下列信息有助于确定程序集“Microsoft.SqlServer.DTSRuntimeWrap”无法加载的原因。
警告:程序集绑定日志记录已关闭。若要启用程序集绑定失败日志记录,请将注册表值[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1。程序集绑定失败日志记录会降低性能。若要关闭此功能,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog]。
堆栈跟踪:
[BadImageFormatException:未能加载文件或程序集“Microsoft.SqlServer.DTSRuntimeWrap”或它的某一个依赖项。试图加载格式不正确的程序。]
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)+123
[ConfigurationErrorsException:未能加载文件或程序集“Microsoft.SqlServer.DTSRuntimeWrap”或它的某一个依赖项。试图加载格式不正确的程序。]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName,Boolean starDirective)+11568160
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()+485 System.Web.Configuration.AssemblyInfo.get_AssemblyInternal()+79 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)+337
System.Web.Compilation.BuildManager.CallPreStartInitMethods()+280
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager,IApplicationHost appHost,IConfigMapPathFactory configMapPathFactory,HostingEnvironmentParameters hostingParameters,PolicyLevel policyLevel,Exception appDomainCreationException)+1167
[HttpException(0x80004005):未能加载文件或程序集“Microsoft.SqlServer.DTSRuntimeWrap”或它的某一个依赖项。试图加载格式不正确的程序。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+11700896 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+141 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context)+4869125
4条答案
按热度按时间o4tp2gmn1#
如果这是Web应用程序的一部分,您需要启用从IIS的应用程序池运行32位应用程序。这将解决您的问题。
tcbh2hod2#
Microsoft.SqlServer.DTSRuntimeWrap.dll可能不在GAC中,这意味着必须将其复制到Web应用程序的 bin 文件夹中,或手动添加到计算机的GAC中(例如,使用GACUTIL.exe)。您可能可以在
C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies\
中找到它。如果您从Visual Studio项目中的类似位置引用它,那么你可能只需要在引用的属性中将 Copy Local 的选项设置为 True。请注意,此DLL可能不可再分发,因此您可能必须在运行应用程序的任何Web服务器上实际安装SSIS,以避免违反SSIS许可,但您必须对此进行验证。
crcmnpdw3#
在我的情况下,问题得到解决后,我启用了“允许32位应用程序”上的“DefaultAppPool”在IIS中。
下面是实现这一点的步骤
1.开放式互联网信息服务
1.转到应用程序池
1.右键单击“DefaultAppPool”
1.选择高级设置
1.将“启用32个应用程序”设置为true
1.点击OK
1.回收应用程序池
1.重新启动IIS
mznpcxlj4#
在应用程序池中右键单击DefaultAppPool。然后选择高级设置。