无法从我的 WCF 服务获取 OracleConnection

Posted

技术标签:

【中文标题】无法从我的 WCF 服务获取 OracleConnection【英文标题】:Can't get OracleConnection from my WCF service 【发布时间】:2014-01-26 12:55:38 【问题描述】:

我正在尝试从我的 WCF 服务打开 OracleConnection:

string strCon = ConfigurationManager.ConnectionStrings["dwhConnectionString"].ConnectionString;

using (var con = new OracleConnection(strCon))
 
     con.Open();
 

但得到一个错误:

“由于内部错误,服务器无法处理请求。有关错误的更多信息,请在服务器上打开 IncludeExceptionDetailInFaults(来自 ServiceBehaviorAttribute 或来自配置行为)以发送异常信息返回客户端,或根据 Microsoft .NET Framework SDK 文档打开跟踪并检查服务器跟踪日志。"

和堆栈跟踪:

服务器堆栈跟踪:在 System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(消息 回复、MessageFault 故障、字符串操作、MessageVersion 版本、 故障转换器故障转换器)在 System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime 操作,ProxyRpc& rpc) 在 System.ServiceModel.Channels.ServiceChannel.Call(字符串动作, Boolean oneway, ProxyOperationRuntime 操作, Object[] ins, Object[] 出局,TimeSpan 超时)在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime 操作)在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage 留言)

在 [0] 处重新抛出异常:在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(消息数据& msgData,Int32 类型)在 RNPDD.DwhServiceWeb.IService1.GetDataUsingDataContract(复合类型 复合)在 RNPDD.DwhServiceWeb.Service1Client.GetDataUsingDataContract(复合类型 复合)在 c:\Users\kryazhnikov-ki\OTD\NEW_RNPDD\RNPDD\RNPDD\Service References\DwhServiceWeb\Reference.cs:第 104 行 RNPDD.MainForm.button3_Click(Object sender, EventArgs e) in c:\Users\kryazhnikov-ki\OTD\NEW_RNPDD\RNPDD\RNPDD\MainForm.cs:183 行

但是,当我在本地服务器上启动 WCF 服务时,连接已正确打开。 那是我的 Web.config 代码:

 <?xml version="1.0"?>
<configuration>
  <connectionStrings>
    <add name="dwhConnectionString"
     connectionString="Data Source=dwh;Persist Security Info=True;User ID=kryazh;Password=******;Unicode=True"
     providerName="System.Data.OracleClient" />
    <add name="RNPDD_DATABASE"
    connectionString="Data Source=vm-srvdoccli2.rs.ru;Initial Catalog=RNPDD;User ID=kryazh; Password=******;"
     providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5"/>
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
        <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <directoryBrowse enabled="true"/>
  </system.webServer>
</configuration>

我错了吗?

非常感谢!

【问题讨论】:

【参考方案1】:

如果我理解正确,只要您在数据库服务器上运行服务,您的服务就可以正常工作,对吗?

在机器出现故障时,您是否安装并配置了 Oracle 客户端组件?此外,您是否尝试过遵循异常中的建议,在服务器上启用详细日志记录?

【讨论】:

本地和远程服务器是同一台机器。

以上是关于无法从我的 WCF 服务获取 OracleConnection的主要内容,如果未能解决你的问题,请参考以下文章

无法从本地机器调用 WCF 服务

WCF - 无法发送数据

WCF 服务返回无法理解的错误消息

.NET WCF 异常

无法在 React 中从我的 API 服务器获取数据

如何使用 Json.Net 从我的 WCF 休息服务(.NET 4)返回 json,而不是用引号括起来的字符串?