http:
Response code:500
Response message:Internal Server Error
接口返回数据:
{
"IsSuccess": false,
"Code": 200,
"Message": "该手机号已注册,请重新尝试!",
"RespTime": "2020-03-24 18:33:33.623",
"Data": null
}
http 报错,但是数据是正常返回的
接口返回数据:
{
"IsSuccess": false,
"Code": 200,
"Message": "该手机号已注册,请重新尝试!",
"RespTime": "2020-03-24 18:33:33.623",
"Data": null
}
只能说明 "该手机号已注册,请重新尝试!"
至于
Response code:500
Response message:Internal Server Error。
这个只是人家发现你手机已注册后,
直接 throw exception了,
统一交给了异常处理拦截器而已。
你看一下,“该手机号已注册”,这个逻辑出现后,
你是怎么接下来处理的。
如果是直接抛出异常,那么在异常过滤器里的代码又是如何实现的。
你在看看在Global.asax或者 filter中,有没有哪些针对Response统一操作的地方
发现他们搭建这个项目的人,只注册了这个:GlobalExceptionFilter,没有其他异常过滤器
使用,最开始这个问题就是这里面测试出来的,
一个线程,每5秒1,出现概率 1%
恩,那就回到了我之前提出的情况:并发问题
你们有详细的记录日志吗?
我听起来,你们可能是正式环境里,遇到这种问题,
那就可能和并发有关系了。
由于错误报的并不详细,只是服务器内部错误。
所以缺乏准确的错误信息,那么只能猜测了。
1 可能是并发访问使用了某些共享变量导致
2 可能某些访问产生了路由重定向
3 数据库操作期间是不是出问题了。
如果这个站点没有做全局异常捕获,并记录日志,
直接对外抛出了500异常,
如果是Windows服务器的IIS,可以登录服务器,看下系统日志下的应用程序日志。
如果是Linux,那只能想办法改代码加日志了。
也可以登录到服务器上,用127.0.0.1尝试反复刷新看看能不能重现。
可能是个与延迟有关的问题:你的软件服务量有多大?是否属于非重要业务?可能是系统忙的时候,就不运行这个代码了;但是也有可能是反过来的意思,就是系统需要分析调配你的软件的服务。总之,就是你的软件处于非正常运行状态。
我通过一步一步,记录日志发现,是他们在全局配置中,注册引用的一个第三方中间件,
里面的一个list出现null,然后抛出异常的。导致了,数据返回是正常的,http抛出500
500也是可以携带回执报文的好么,后端在编写接口的时候,返回的状态码和回执的内容有出入也是有这种情况的。比如有时候,前端要求我返回错误信息的时候,也用200 的状态码,通过以下代码,就可以模拟出你的情况,是我自己没看清楚题目,还是你自己不理解我说的?
你这种是人为的,是需求这样处理的。
但是我们的不是,我们的需求是http 200 code 也是200.
然后如果你的一个项目,不是人为出现这样的情况。
你还能轻松说出:“他返回的code 是自定义的,不一定和响应状态码一样的,纠结啥”
不要把一个bug 想的太简单
代码好像没有什么问题。很可能是系统服务方的问题。错误码500,很可能与系统延迟有关。其他的就没有论坛顶帖机什么可说的了。
报500的错误,就是程序内部处理出了问题,你没有用try处理就会这样
代码和服务器都没问题,
而是他们在全局配置类里面引用了一个第三方日志中间件,导致的
这就导致了,有概率出现 http:500,然后数据返回成功。大多数请求都是成功的
代码和服务器都没问题,
而是他们在全局配置类里面引用了一个第三方日志中间件,导致的
这就导致了,有概率出现 http:500,然后数据返回成功。大多数请求都是成功的