首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在BeforeSendRequest中取消请求

如何在BeforeSendRequest中取消请求
EN

Stack Overflow用户
提问于 2013-05-23 00:15:33
回答 2查看 765关注 0票数 7

在使用IClientMessageInspector接口时,是否可以取消来自BeforeSendRequest方法的请求?无论如何,返回null都会发送请求。

代码语言:javascript
运行
复制
 public object BeforeSendRequest(ref Message request, IClientChannel channel)
 {
    if(Condition)
    {
        return null; //I want cancel my send
    }
    else
    {
       return request;
    }
  }
EN

Stack Overflow用户

发布于 2017-04-04 03:57:53

可能有多种方法来处理这种情况,但我认为它们都只涉及到在IClientMessageInspect.BeforeSendRequest中抛出一个异常来提前结束客户端操作。抛出的异常类型可能会有所不同,这取决于消费应用程序在您的场景中所期望的内容,或者您可以在上游其他地方捕获的内容。

在我的例子中,我正在构建一个WCF代理/路由服务。我的IClientMessageInspect被要求检查发往我们的短信供应商的输出消息,并且不允许输出消息被发送到供应商的服务应用编程接口,除非出站电话号码在路由器代理/路由服务web.config中被“白名单”

代码语言:javascript
运行
复制
public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
    if (!WhiteList.IsWhiteListed(outboundNumber))
    {
        throw new WebFaultException<RouterServiceFault>(new RouterServiceFault {Message = $"Phone number {outboundNumber} is not white listed." }, HttpStatusCode.Forbidden);
    }

    // Save the routed to service request address so we can see it after receive reply (in correlationState)
    return request.Headers.To;
}

在RouterServiceFault是一个简单类的情况下,我可以回传一条消息来显示/记录消费应用程序。

代码语言:javascript
运行
复制
[ServiceContract]
public class RouterServiceFault
{
    [DataMember]
    public string Message { get; set; }
}
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16696750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档