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,然后数据返回成功。大多数请求都是成功的