J'ai cherché partout comment trouver un type de contrat de défaut de base dans C#. Je voudrais que tous mes contrats d'erreur héritent d'une classe et aient un catch (FaultException fex) dans le contrôleur MVC.C# WCF catch Fault Exceptions du type de base
DataContracts
[DataContract]
public class BaseClass1
{ }
[DataContract]
public class Class2 : BaseClass1
{ }
service
[ServiceContract]
public interface IService1
{
[OperationContract]
[FaultContract(typeof(BaseClass1))]
[FaultContract(typeof(Class2))] //Do I need this one?
void ThrowClass2();
}
public class Service1 : IService1
{
public void ThrowClass2()
{
throw new FaultException<Class2>(new Class2(), "Class2 Reason");
}
}
Service aux consommateurs
FaultTestService.Service1Client client = null;
try
{
client = new FaultTestService.Service1Client();
client.ThrowAmpFaults("InvalidParameter", 0);
}
catch (FaultException<Namespace.BaseClass1> fex)
{
//DOES NOT GO IN HERE AS I WOULD EXPECT
}
catch (FaultException fex)
{
//Other Possible Option
MessageFault fault = fex.CreateMessageFault();
var fe1 = fault.GetDetail<BaseClass1>();
//This throws a serialization exception it needs <Class2>
}
S'il vous plaît laissez-moi savoir si l'un ou l'autre de ces énoncés peut être corrigé pour faire ce que je cherche.
Mais quelle est la raison de ce comportement? –