Выбрасывать исключение SOAP, когда есть отложенные миграции базы данных Entity Framework для любого запроса SOAP - PullRequest
0 голосов
/ 06 мая 2020

Я хочу вызвать исключение SOAP, когда есть ожидающие миграции Entity Framework и кто-то отправляет любой запрос SOAP. Если я выброшу FaultException в свой Global.asax, я получу ответ html от IIS. Это работает, но довольно некрасиво. Поэтому я попытался добавить его в метод IServiceBehavior.Validate() моего класса ServiceBehavior.

 public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
 {
     var isDatabaseUpdateRequired = new MyDb().GetPendingMigrations().Any();
     if (isDatabaseUpdateRequired) throw new FaultException("There are pending migrations.");
 }

Но я не получил ответа XML с сообщением об ошибке на моем клиенте SoapUI. Где мне выбросить это исключение?

1 Ответ

1 голос
/ 12 мая 2020

Вы можете вызвать это исключение в классе, реализующем интерфейс IDispatchMessageInspector. Реализуйте IDispatchMessageInspector для проверки или изменения входящих или исходящих сообщений приложения либо перед отправкой сообщения запроса операции, либо перед возвратом ответного сообщения вызывающему.

Когда сервер получает запрос клиента, DispatchMessageInspector перехватывает все клиентские запросы.

enter image description here

Изображение выше является реализацией IDispatchMessageInspector, выдает исключение в методе BeforeSendReply.

enter image description here

Клиент отправляет запрос на сервер и получает сообщение об исключении.

Вот ссылка про интерфейс IDispatchMessageInspector.

...