我想在有待处理的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响应和错误信息。我应该在哪里抛出这个异常?
你可以在实现接口的类中抛出这个异常。IDispatchMessageInspector
. 实施 IDispatchMessageInspector
来检查或修改入站或出站的应用消息,在向操作发送请求消息之前或向调用者返回回复消息之前。
当服务器接收到客户端的请求时,在 DispatchMessageInspector
拦截所有的客户端请求。
上图是 IDispatchMessageInspector
抛出一个异常,在 BeforeSendReply
方法,客户端向服务器发送一个请求,并得到一个异常消息。
客户端向服务器发送请求并得到一个异常消息。
这里有一个链接 关于 IDispatchMessageInspector
介面。