当任何SOAP请求有待定的实体框架数据库迁移时,抛出SOAP异常。

问题描述 投票:0回答:1

我想在有待处理的Entity Framework迁移和有人发送任何SOAP请求时,抛出一个SOAP异常。如果我抛出一个 FaultException 在我 Global.asax我从IIS中得到一个html响应。这工作,但它是相当丑陋的。所以我试着把它扔在 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.");
 }

但是我在SoapUI客户端上没有得到任何XML响应和错误信息。我应该在哪里抛出这个异常?

entity-framework wcf exception soap
1个回答
1
投票

你可以在实现接口的类中抛出这个异常。IDispatchMessageInspector. 实施 IDispatchMessageInspector 来检查或修改入站或出站的应用消息,在向操作发送请求消息之前或向调用者返回回复消息之前。

当服务器接收到客户端的请求时,在 DispatchMessageInspector 拦截所有的客户端请求。

enter image description here

上图是 IDispatchMessageInspector抛出一个异常,在 BeforeSendReply 方法,客户端向服务器发送一个请求,并得到一个异常消息。

enter image description here

客户端向服务器发送请求并得到一个异常消息。

这里有一个链接 关于 IDispatchMessageInspector 介面。

© www.soinside.com 2019 - 2024. All rights reserved.