当任何 SOAP 请求都有挂起的实体框架数据库迁移时引发 SOAP 异常

Throw SOAP exception when there are pending Entity Framework database migrations for any SOAP request

提问人:julian.a 提问时间:5/6/2020 最后编辑:marc_sjulian.a 更新时间:5/15/2020 访问量:134

问:

当有挂起的实体框架迁移并且有人发送任何 SOAP 请求时,我想抛出 SOAP 异常。如果我在我的 中抛出一个 ,我会从 IIS 得到一个 html 响应。这有效,但它相当丑陋。所以我试着把它扔进我的班级的方法中。FaultExceptionGlobal.asaxIServiceBehavior.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 响应。我应该在哪里抛出此异常?

实体框架 WCF 异常 SOAP

评论


答:

1赞 Ding Peng 5/12/2020 #1

您可以在实现接口的类中抛出此异常。实现在将请求消息分派给操作之前或在将回复消息返回给调用方之前检查或修改入站或出站应用程序消息。IDispatchMessageInspectorIDispatchMessageInspector

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

enter image description here

上图是实现的,在方法中抛出一个异常。IDispatchMessageInspectorBeforeSendReply

enter image description here

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

这是关于界面的链接IDispatchMessageInspector