无法从我的 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的主要内容,如果未能解决你的问题,请参考以下文章