• C# 调用 WebService 连接ORACLE 11g


    这几天开发一个WebService遇到很多问题,记录下来顺便帮助一下以后遇到情况的人。

    我是通过ADO.NET来连接ORACLE的,也可以用ORACLE提供的ODP.NET。

    通过正常的连接后部署IIS 用IE调用我的接口出现了

    “System.InvalidOperationException: 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。 ---> System.BadImageFormatException: 试图加载格式不正确的程序。”

    解决这个问题:

    第一步原因:

    我服务器系统是 Server2008 R2 64位 ORACLE的服务端安装的是64位,客户端安装64位,为了解决了这个问题,我通过WinForm程序测试用ADO.NET通过64位的ORACLE客户端连接64位服务端始终不成功。无奈之下安装了32位的客户端后就可以访问了。

    第二步原因:

    我开发WebService的时候用2.0的框架,我本机系统是64位的WIN7,在生成程序的时候我是默认的Any CPU。可能生成发布的时候是64位的,网上有说改为X86,但这种方法也依然无法解决我的额外难题,然后我在IIS里对应网站的应用程序池里把“启用32应用程序”设位Treu 这下可以运行了。

    在调用WEBSERIVCE的时候又出现了问题,在IE调用接口报“webservice 返回datatable无法序列化 DataTable。未设置 DataTable 名称。” 我webService调用了一个方法 方法返回值是DataTable 按照提示我把 DataTable加载了 Name但还是没有解决这个问题,应为DataTable无法序列化 后来转换为了DataSet解决了这个问题。

    还有一个问题是没有在目标机器上也就是没有在部署的WEBSERIVCE的IIS机器上访问Web接口的时候会出现“测试测试窗体只能用于来自本地计算机的请求。”的错误,这个问题解决方法要在配置文件里面添加

    在web.config的<system.web></system.web>中间加入如下配置节内容
    <webServices>
             <protocols>
                <add name="HttpSoap"/>
                <add name="HttpPost"/>
                <add name="HttpGet"/>
                <add name="Documentation"/>
             </protocols>
    </webServices>

  • 相关阅读:
    Deep learning:二十五(Kmeans单层网络识别性能)
    Deep learning:三十六(关于构建深度卷积SAE网络的一点困惑)
    Matlab成长之路_5(解决out of memory问题)
    Deep learning:三(Multivariance Linear Regression练习)
    Deep learning:一(基础知识_1)
    Deep learning:三十二(基础知识_3)
    算法设计和数据结构学习_2(常见排序算法思想)
    Deep learning:二十七(Sparse coding中关于矩阵的范数求导)
    Deep learning:十二(PCA和whitening在二自然图像中的练习)
    总结系列_15(不能从u盘启动安装win7系统的一个小原因)
  • 原文地址:https://www.cnblogs.com/junjie94wan/p/3324706.html
Copyright © 2020-2023  润新知