У меня есть вопрос о том, как отправить пользовательское исключение как FaultException. Это работает, когда я использую системное исключение, такое как ArgumentException, но если я изменяю его на свое собственное исключение «TestException», оно терпит неудачу. Я не могу получить конфигурацию для ссылки на службу, когда пытаюсь добавить ее.
Работает:
[OperationContract]
[FaultContract(typeof(ArgumentException))]
[TransportChannel TestMethod ();
public Void TestMethod()
{
throw new FaultException<ArgumentException>(new ArgumentException("test"), new FaultReason("test"));
}
Не работает:
[OperationContract]
[FaultContract(typeof(TestException))]
[TransportChannel TestMethod ();
public Void TestMethod()
{
throw new FaultException<TestException>(new TestException("test"), new FaultReason("test"));
}
Моя «TestException» выглядит так:
[Serializable()]
public class TestException: Exception
{
public TestException () : base() { }
public TestException (string message) : base(message) { }
public TestException (string message, Exception innerException) : base(message, innerException) { }
public TestException (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context) { }
}
Полагаю, мне нужно добавить DataContract для пользовательского объекта, но я не понимаю, почему он не будет работать так, как работает, поскольку ArgumentException работает. Может ли кто-нибудь просветить меня?
Спасибо за помощь:)