项目介绍:为前台网站提供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. 树莓派连接DHT11温湿度传感器(python)

    介绍 DHT11作为一个廉价配件,同时包含了温度.湿度传感器,而且,编码使用也非常简单. 本文介绍如果在树莓派中使用 DHT11,代码是Python.如果有任何疑问,欢迎在下面留言. 接线 VCC接5 ...

  2. 【HackerRank】Ice Cream Parlor

    Sunny and Johnny together have M dollars which they intend to use at the ice cream parlour. Among N ...

  3. 摊铺机基本参数介绍(鼎盛天工WTD9501A)

    柴油水冷发动机,马力强劲,功率储备系数大,低噪音.低污染,经济性好,低温起动性能好.微电子控制,分别实现刮板输送.螺旋供料左右独立驱动,可实现自动供料,保持熨平板前物料均匀,调平系统响应速度快,调平精 ...

  4. 纯CSS3动画按钮效果

    在线演示 本地下载

  5. MySQL实验1: 新建一个名为 library 的数据库,包含 book、reader 两张表,根据自己的理解安排表的内容并插入数据。

    数据表(table)简称表,它是数据库最重要的组成部分之一.数据库只是一个框架,表才是实质内容. 实验: 新建一个名为 library的数据库,包含 book.reader两张表,根据自己的理解安排表 ...

  6. Android LCD(三):LCD接口篇【转】

    本文转载自:http://blog.csdn.net/xubin341719/article/details/9177085 关键词:Android LCD控制器 Framebuffer PWM  平 ...

  7. ssm文件上传下载比较详细的案例

    背景:ssm框架 接下来,我会介绍单文件上传,下载,多文件的上传,下载,使用ajax进行文件的上传下载,和普通的表单提交的文件上传下载. 只要做项目,总是少不了文件的操作,好了废话不多说,直接上代码! ...

  8. sql server parameter validation of stored procedure

    https://stackoverflow.com/questions/41908156/validating-missing-parameter-from-procedure-calls I don ...

  9. UVA 11525 Permutation (树状数组+YY)

    题意:给你k个数Si,然后给你一个等式   H= ∑  Si ∗ (K − i)!  (i=(1->k)且0 ≤ Si ≤ K − i). 叫你求出第H个全排列 其实这是一个康托展开:X=a[n ...

  10. HDU 5877 Weak Pair (2016年大连网络赛 J dfs+反向思维)

    正难则反的思想还是不能灵活应用啊 题意:给你n个点,每个点有一个权值,接着是n-1有向条边形成一颗有根树,问你有多少对点的权值乘积小于等于给定的值k,其中这对点必须是孩子节点与祖先的关系 我们反向思考 ...