项目介绍:为前台网站提供rest接口来操作erp相关数据

涉及db:oracle11

技术方案:因为erp是用remoting来调用,我想rest实现部分调用remoting来操作减少耦合,当然性能上损失点。

可惜架构师要求直接引用dll来调用

言归正传,当初erp是用32位oracle客户端而我们机器都是装64位系统,所以编译时候必须用x86来,不然启动会报"未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。" ,后来在我的建议下换成64位客户端用anycpu编译就可以了。

rest服务调用erp的接口需要引用Oracle.DataAccess.dll版本为4.112.3.0,先用iishost服务来测试调用,wcf测试客户端一直报错

错误: 无法从 http://localhost:8733/MallAPI/SaleOrderService.svc 获取元数据如果是您有权访问的 Windows (R) Communication Foundation 服务,请检查是否已启用在指定地址发布元数据。有关启用元数据发布的帮助,请参阅 http://go.microsoft.com/fwlink/?LinkId=65455 上的 MSDN 文档。WS-Metadata Exchange 错误    URI: http://localhost:8733/MallAPI/SaleOrderService.svc    元数据包含无法解析的引用:“http://localhost:8733/MallAPI/SaleOrderService.svc”。    接收对 http://localhost:8733/MallAPI/SaleOrderService.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。有关详细信息,请参见服务器日志。    基础连接已经关闭: 接收时发生错误。    无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。    远程主机强迫关闭了一个现有的连接。HTTP GET Error    URI: http://localhost:8733/MallAPI/SaleOrderService.svc    下载“http://localhost:8733/MallAPI/SaleOrderService.svc”时出错。    请求失败,错误信息为:--<!DOCTYPE html><html>    <head>        <title>未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。</title>        <meta name="viewport" content="width=device-width" />        <style>         body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}          p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}         b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}         H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }         H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }         pre {font-family:"Consolas","Lucida Console",Monospace;font-size:11pt;margin:0;padding:0.5em;line-height:14pt}         .marker {font-weight: bold; color: black;text-decoration: none;}         .version {color: gray;}         .error {margin-bottom: 10px;}         .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }         @media screen and (max-width: 639px) {          pre { width: 440px; overflow: auto; white-space: pre-wrap; word-wrap: break-word; }         }         @media screen and (max-width: 479px) {          pre { width: 280px; }         }        </style>    </head>    <body bgcolor="white">            <span><H1>“/MallAPI”应用程序中的服务器错误。<hr width=100% size=1 color=silver></H1>            <h2> <i>未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。</i> </h2></span>            <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">            <b> 说明: </b>执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。            <br><br>            <b> 异常详细信息: </b>System.BadImageFormatException: 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。<br><br>            <b>源错误:</b> <br><br>            <table width=100% bgcolor="#ffffcc">               <tr>                  <td>                      <code>执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。</code>                  </td>               </tr>            </table>            <br>            <b>程序集加载跟踪:</b> 下列信息有助于确定程序集“Oracle.DataAccess”未能加载的原因。<br><br>            <table width=100% bgcolor="#ffffcc">               <tr>                  <td>                      <code><pre>=== 预绑定状态信息 ===日志: 用户 = huangjun\hj日志: DisplayName = Oracle.DataAccess (Partial)警告: 为程序集提供了部分绑定信息:警告: 程序集名称: Oracle.DataAccess | 域 ID: 4警告: 当仅提供程序集显示名称的一部分时,将发生部分绑定。警告: 这可能导致联编程序加载错误的程序集。警告: 建议为程序集提供完全指定的文字标识,警告: 并由简单名称、版本、区域性和公钥标记组成。警告: 有关此问题的详细信息和常见解决方案,请参见白皮书 http://go.microsoft.com/fwlink/?LinkId=109270。日志: Appbase = file:///F:/work/SourceCode/MallAPI/IISHost/日志: 初始 PrivatePath = F:\work\SourceCode\MallAPI\IISHost\bin调用程序集: (Unknown)。===日志: 此绑定从 default 加载上下文开始。日志: 正在使用应用程序配置文件: F:\work\SourceCode\MallAPI\IISHost\web.config日志: 使用主机配置文件: 日志: 使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 的计算机配置文件。日志: 此时没有为引用应用策略(私有、自定义、分部或基于位置的程序集绑定)。日志: 尝试下载新的 URL file:///C:/Users/hj/AppData/Local/Temp/Temporary ASP.NET Files/mallapi/b831d71b/68b495b/Oracle.DataAccess.DLL。日志: 尝试下载新的 URL file:///C:/Users/hj/AppData/Local/Temp/Temporary ASP.NET Files/mallapi/b831d71b/68b495b/Oracle.DataAccess/Oracle.DataAccess.DLL。日志: 尝试下载新的 URL file:///F:/work/SourceCode/MallAPI/IISHost/bin/Oracle.DataAccess.DLL。错误: 未能完成程序集的安装(hr = 0x8007000b)。探测终止。</pre></code>                  </td>               </tr>            </table>            <br>            <b>堆栈跟踪:</b> <br><br>            <table width=100% bgcolor="#ffffcc">               <tr>                  <td>                      <code><pre>[BadImageFormatException: 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。]   System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0   System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34   System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77   System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16   System.Reflection.Assembly.Load(String assemblyString) +28   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38[ConfigurationErrorsException: 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。]   System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752   System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218   System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130   System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170   System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91   System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath) +258   System.Web.Compilation.BuildManager.ExecutePreAppStart() +135   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516[HttpException (0x80004005): 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。]   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9874568   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101   System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +456</pre></code>                  </td>               </tr>            </table>            <br>            <hr width=100% size=1 color=silver>            <b>版本信息:</b>?Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.18045            </font>    </body></html><!-- [BadImageFormatException]: 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。   在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)   在 System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)   在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)   在 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection)   在 System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)   在 System.Reflection.Assembly.Load(String assemblyString)   在 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)[ConfigurationErrorsException]: 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。   在 System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective)   在 System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()   在 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai)   在 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)   在 System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies()   在 System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath)   在 System.Web.Compilation.BuildManager.ExecutePreAppStart()   在 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)[HttpException]: 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。   在 System.Web.HttpRuntime.FirstRequestInit(HttpContext context)   在 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)   在 System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr)-->--.

然后我试了selfhost是ok的,我对测试客户端还不死心网上查资料,解决方案以anycpu、mixed platforms、x64编译生成都不行,来回折腾了2天,最后试了用iis来host结果是ok的,看样子wcf测试客户端默认是32位编译,当然我没有考证过,如果有哪位知道的同学麻烦告诉一下,这里先谢谢啦

结论:系统64、oracle client64如果用wcf测试客户端报错就用iis host

让人蛋疼的“Oracle.DataAccess.dll”的更多相关文章

  1. Web项目使用Oracle.DataAccess.dll 类库连接oracle数据库

    首先我用的工具是oracle 32位免安装版+Oracle.DataAccess.dll 32位  文件版本4.121.1.0+vs2013 +win7 64位 Oracle.DataAccess.d ...

  2. Asp.net using Oracle.DataAccess.dll access oracle 11g 64bit & x86

    使用.net访问oracle数据库时一般需要在机器上安装instantclient才能正常连接. 下面介绍一种不用安装instantclient直接引用dll就用.net能连接oracle数据库的方法 ...

  3. IIS8无法调用Oracle.DataAccess .dll问题

    之前在.net平台下操作Oracle都是用的oracle.dataaccell.dll引用,但是服务器升级为II8后,发布的新服务有关Oracle数据库部分都无法运行,调试了好久发现是IIS8不支持低 ...

  4. winform连接oracle时Oracle.DataAccess.dll版本问题

    1.通用TestOracle.zip部署到iis上,或直接运行程序测试当前全局程序集 protected void Button1_Click(object sender, EventArgs e) ...

  5. winform连接oracle时Oracle.DataAccess.dll版本问题 Silverlight

    1.通用TestOracle.zip部署到iis上,或直接运行程序测试当前全局程序集 protected void Button1_Click(object sender, EventArgs e) ...

  6. 错误: 未能完成程序集的安装(hr = 0x8007000b),.net程序关于使用Oracle.DataAccess.dll不同版本x86和x64问题,即oracle odp.net 32位/64位版本的问题

    如果你的机器上安装了odp.net,且确信machine.config也有类似以下结节:(64位+.net 4.0环境下,machine.config可能会有4份,分别对应于.net2.0/4.0的3 ...

  7. Oracle.DataAccess.dll 部署安装

    Oracle.DataAccess.dll 要拷贝到项目发布目录 项目发布的时候,还必须要拷贝以下几个文件在运行目录1.oci.dll 2.oraociicus11.dll 3.OraOps11w.d ...

  8. Oracle.DataAccess.dll方式操作oracle数据库

    Oracle.DataAccess.dll方式操作oracle数据库 一.查询语句: using (OracleConnection conn = new OracleConnection(Syste ...

  9. webservice因引用Oracle.DataAccess.dll导致发布前预编译不通过

    这个问题最初是什么问题已经忘了,虽然就在几小时前/

随机推荐

  1. 跟踪 twisted 里deferred 的Callback

    twisted 提供了 deferred 机制,而关键点就是回调.通过查看deferred 源码 (version 8.2.0)我们可以 看到 deferred的addCallback是怎么工作的,以 ...

  2. [GUI] Linux中的图形管理

    转:http://www.cnblogs.com/yongpenghan/p/4555619.html 做了一段时间linux下与QT事件相关的工作,经常会遇到X11,总是苦于无法完全理解其与linu ...

  3. 【鸟哥的Linux私房菜】笔记1

    Linux是什么 从操作系统与cpu架构关系到linux  Richard Mathew Stallman GPL 关于GNU计划 Linux的发展 Linux的核心版本 Linux的特色 Linux ...

  4. 20145231 《Java程序设计》第一周学习总结

    20145231 <Java程序设计>第一周学习总结 教材学习内容总结 Java三大平台Java SE,Java EE,Java ME.其中,Java SE是我们学习的基础. Java S ...

  5. HashMap,LinkedHashMap和TreeMap的区别

    Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复会覆盖),但允许值重复. 1. HashMap Hashmap是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获 ...

  6. 线性代数:Ax=b的解

    n列的矩阵A,当且仅当向量b是列空间C(A)的一个向量时,Ax=b有解. C(A)的零空间是N(A),N(A)正交补是A的行空间C(T(A)), 依据上一章的结论,任何Rn向量可以表示为r+n,其中n ...

  7. Kubernetes Kube-proxy

    Kube-proxy主要负责Service的实现. kube-proxy enables the Kubernetes service abstraction by maintaining netwo ...

  8. linux设置系统时间与时区以及设置bios时间同步系统时间

    有装过Linux系统的人,可能都会有这样的经历,就是该机器安装windows系统时,时间正确,但是安装了linux系统后,尽管时区选择正确,也会发现系统时间不对.这是由于安装系统时采用了UTC,那么什 ...

  9. 修改jpivot源码实现分页

    使用jpivot过程中,如果查询到的结果行数超过一个阈值,后面的显示就会丢失,这时需要分页显示. 假设应用中组装的MDX语句已经含有NON EMPTY,把空行直接过滤掉了. 这时需要修改的jpivot ...

  10. springboot+mybatis+springSecurity+thymeleaf

    配置步骤: .pom <dependencies> <dependency> <groupId>org.springframework.security</g ...