asp.net 获取返回客户端数据

sbcnn1 2016-12-16 03:00:30
由于需求问题
现在在数据库查到一些字段是null
APP那边数据不能接受到那

例如: 调用我们的接口
http://sssss.com
我们正常返回数据是:
{
name:"小白",
age:null
}

想问下 有没有办法 在管道事件走完返回客户端之前 统一吧返回数据的json
拿出来 然后替换 空字符串。。
目前在 HttpContext.Current.Response 不知道怎么拿..求大神。。或者有什么办法。。。。
...全文
327 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
by_封爱 2017-04-07
  • 打赏
  • 举报
回复
OnActionExecuting 好像还没执行到那一步呢吧? 在OnActionExecuted的时候才能拿到返回值的.. 比如.我用他做拦截 是这样的.

    [Route("User/Add")]
    [HttpPost]
    public dynamic AddUser([FromBody] Product p)
    {
        if (p == null)
        {
            throw new Exception("Product为空");
        }
        list.Add(p);
        return Respose.OK(p);
    }

     public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
    {
        var MonLog = actionExecutedContext.Request.Properties[Key] as WebApiMonitorLog;
        MonLog.ExecuteEndTime = DateTime.Now;


        if (actionExecutedContext.Exception != null)
        {
            MonLog.Exception = actionExecutedContext.Exception.Message;

            var base_resp = new { base_resp = new { errcode = -1, errmsg = MonLog.Exception } };
            MonLog.Respose = Newtonsoft.Json.JsonConvert.SerializeObject(base_resp);
            actionExecutedContext.Response = actionExecutedContext.Request.CreateResponse(HttpStatusCode.OK, base_resp);
        }
        else
        {
            var c = actionExecutedContext.Response;
            if (c != null)
            {
                var oc = c.Content as ObjectContent;
                if (oc != null)
                {
                    MonLog.Respose = oc.Value;
                }
            }
            base.OnActionExecuted(actionExecutedContext);
        }
    }
其中 MonLog.Respose就是action的返回值..你可以在这里做处理替换..
insus 2017-04-07
  • 打赏
  • 举报
回复
Insus.NET的做法,一般是设法返回model来处理。
sbcnn1 2016-12-17
  • 打赏
  • 举报
回复
引用 6 楼 wangjun8868 的回复:
[quote=引用 2 楼 sbcnn1 的回复:] [quote=引用 1 楼 wangjun8868 的回复:] 返回之前 直接替换就是了,replace(''","")
我知道...问题是怎么获取返回之前的数据 我是用webAPI 想用AOP 来处理。。。。 结果不知道怎么拿到数据 还有一个问题。。拿到数据后可以再替换放回去么[/quote] 你上代码 我给你看下[/quote]
  public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
        {
            base.OnActionExecuting(actionContext);
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");


            //想在这个地方吧 actionContext返回给客户端的数据拿出来 

            //再替换掉Null

            // 重新打包回传的讯息




        }
         
  • 打赏
  • 举报
回复
设计开发基本的 http 服务,会 ashx 就够了。
编程有钱人了 2016-12-17
  • 打赏
  • 举报
回复
引用 2 楼 sbcnn1 的回复:
[quote=引用 1 楼 wangjun8868 的回复:] 返回之前 直接替换就是了,replace(''","")
我知道...问题是怎么获取返回之前的数据 我是用webAPI 想用AOP 来处理。。。。 结果不知道怎么拿到数据 还有一个问题。。拿到数据后可以再替换放回去么[/quote] 你上代码 我给你看下
闭包客 2016-12-16
  • 打赏
  • 举报
回复
估计在查询上入手更简单。
闭包客 2016-12-16
  • 打赏
  • 举报
回复
我很落后,没有用过 WebAPI
正怒月神 版主 2016-12-16
  • 打赏
  • 举报
回复
没有太明白你的意思。 如果你是要重新打包数据的话。增加一个webapi的过滤器
public class ApiErrorHandleAttribute : ExceptionFilterAttribute
    {
        public override void OnException(HttpActionExecutedContext actionExecutedContext)
        {
            base.OnException(actionExecutedContext);

            var result = new apiResult<object>()
            {
                code = HttpStatusCode.BadRequest,    //状态码
                msg = actionExecutedContext.Exception.Message      //信息
               ..................自己封装这个apiResult
            };

            // 重新打包回传的讯息
            actionExecutedContext.Response = actionExecutedContext.Request
                .CreateResponse(result.code, result);
        }
    }
sbcnn1 2016-12-16
  • 打赏
  • 举报
回复
引用 1 楼 wangjun8868 的回复:
返回之前 直接替换就是了,replace(''","")
我知道...问题是怎么获取返回之前的数据 我是用webAPI 想用AOP 来处理。。。。 结果不知道怎么拿到数据 还有一个问题。。拿到数据后可以再替换放回去么
编程有钱人了 2016-12-16
  • 打赏
  • 举报
回复
返回之前 直接替换就是了,replace(''","")

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧