private void ProcessException(string message, Exception innerException)
{
SqlManagerException ex = new SqlManagerException(message, innerException);
if (Messages != null)
{
for (int i = 0; i < messages.Count; i++)
{
ex.InfoMessages.Add(messages[i]);
}
}
SqlManagerExceptionMessage exm = new SqlManagerExceptionMessage(ex);
faultReason = new FaultReasonText(exm.Message.InnerException.ToString());
exm.Message = ex;
throw new FaultException<SqlManagerExceptionMessage>(new SqlManagerExceptionMessage(exm.Message), faultReason.Text);
}
And the SqlManagerExceptionMessage .cs is
using System.ServiceModel;
using System.Runtime.Serialization;
namespace SQLManager
{
[DataContractAttribute]
public class SqlManagerExceptionMessage
{
[DataMember]
private SqlManagerException report;
public SqlManagerExceptionMessage(SqlManagerException message)
{
this.report = message;
}
[DataMemberAttribute]
public SqlManagerException Message
{
get { return this.report; }
set { this.report = value; }
}
//public SqlManagerException Exception
//{
// get { return exception; }
// set { exception = value; }
//}
}
}
SqlManagerException .cs is
[Serializable()]
public class SqlManagerException : ApplicationException,ISerializable
{
private SqlManagerInfoMessageList messages;
public SqlManagerException() : base() { }
public SqlManagerException(string message) : base(message) { }
public SqlManagerException(string message,
Exception innerException)
: base(message, innerException) { }
public SqlManagerException(SerializationInfo info, StreamingContext context) : base(info, context)
{
messages = (SqlManagerInfoMessageList)info.GetValue("messages", typeof(SqlManagerInfoMessageList));
}
public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("messages", messages, typeof(SqlManagerInfoMessageList));
base.GetObjectData(info, context);
}
/// <summary>A collection of information messages retrieved from connection.</summary>
public SqlManagerInfoMessageList InfoMessages
{
get
{
if (messages == null)
{
messages = new SqlManagerInfoMessageList();
}
return messages;
}
set
{
messages = value;
}
}
}
}
ASKER
try{
//call a service opertaion
}
catch (FaultException<SqlManagerExceptionMessage> stfex)
{
//handle this stongly typed fault. See the Details property
}
catch (FaultException fex)
{
//process other WCF exceptions
}
catch (Exception ex)
{
everything else
}
ASKER
<system.serviceModel>
<bindings>
<customBinding>
<binding name="SQLManager">
<mtomMessageEncoding></mtomMessageEncoding>
<reliableSession flowControlEnabled ="true" ordered ="true" />
<httpTransport useDefaultWebProxy="true" />
</binding>
</customBinding>
</bindings>
<services>
<service behaviorConfiguration="SQLManager.Oracle.DataAccessBehavior"
name="SQLManager.Oracle.DataAccess">
<endpoint address="http://localhost/SQLManager/Oracle/DataAccess.svc" behaviorConfiguration="SQLManagerBehavior"
binding="customBinding" bindingConfiguration="SQLManager" name="SQLManager"
contract="SQLManager.Oracle.IDataAccess" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost/SQLManager/Oracle" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="SQLManager.Oracle.DataAccessBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true"/>
<dataContractSerializer maxItemsInObjectGraph="150000" />
</behavior>
</serviceBehaviors>
<endpointBehaviors >
<behavior name="SQLManagerBehavior">
<dataContractSerializer maxItemsInObjectGraph="150000" />
</behavior>
</endpointBehaviors>
</behaviors>
<diagnostics>
<messageLogging logEntireMessage="true" logMalformedMessages="true"
logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
</diagnostics>
</system.serviceModel>
The .NET Framework is not specific to any one programming language; rather, it includes a library of functions that allows developers to rapidly build applications. Several supported languages include C#, VB.NET, C++ or ASP.NET.
TRUSTED BY
Oracle.DataAccess.Client.O
could it be occuring somewhere else in the code? The only place in the code you provided where you could be accessing an oracle database is in:
public override void GetObjectData(Serializatio
{
info.AddValue("messages", messages, typeof(SqlManagerInfoMessa
base.GetObjectData(info, context);
}
where you serialize your data. You probably in fact are not accessing the database correctly. Set a breakpoint at the beginning of GetObjectData and step and see thats true. Then find out what you need to do to get access to the database.