Kiedy rzucanie FaultException<CustomFault>
takiego:Wyrzucenie wyjątku FaultException <T> z usługi WCF powoduje, że "Twórca tego błędu nie określił przyczyny".
throw new FaultException<CustomFault>(new CustomFault("Custom fault message"));
uzyskać następujące: „Twórcą tego błędu nie określił powód” Teraz według this MSDN article nie jest wymagane do korzystania z FaultReason
Mam następujący Umowa serwisowa:
[OperationContract]
[FaultContract(typeof(CustomFault))]
CustomType[] SomeMethod(int someParameter);
[DataContract]
public class CustomFault
{
private string report;
public CustomFault(string message)
{
this.report = message;
}
[DataMember]
public string Message
{
get { return this.report; }
set { this.report = value; }
}
}
Jest komentarz na artykuł MSDN, które sugerują, obowiązkowe jest użycie drugiego FaultReason
, ale w kilku innych miejscach widziałem ludzi, którzy twierdzili, że nie powinieneś używać FaultReason
, chyba że jest to konieczne.
Moje pytanie jest następujące; czy jest naprawdę obowiązkowe korzystanie z FaultReason
, a jeśli nie - w jaki sposób mogę zapobiec wyjątkowi podniesionemu podczas próby rzucenia FaultException
?
EDIT
Uruchamiając przykładowy projekt z this article otrzymuję wykopywac zaladowanie samo zachowanie. Być może jest to spowodowane aktualizacją w .NET, a dokumentacja/próbki nie są aktualizowane.
Ilekroć rzuciłem 'FaultException' s przez WCF, nie ustawiłem 'Reason', i nie miałem problemu. Nie mogę rzucić światła na to, dlaczego to nie działa, przepraszam. –
AakashM
Czy otrzymujesz wyjątek podczas wywoływania usługi bez dołączonego debugera VS? –
Nie, ja nie. Może to tylko kwestia nieobsługiwanych poziomów wyjątków w debugerze. Ale wydaje mi się błędne, że dokumentacja używa strategii obsługi błędów, która powoduje wyjątek :( –