.net core 接口return成功 http报500

自渡,难渡。 2020-03-24 06:35:26
http:

Response code:500
Response message:Internal Server Error


接口返回数据:
{
"IsSuccess": false,
"Code": 200,
"Message": "该手机号已注册,请重新尝试!",
"RespTime": "2020-03-24 18:33:33.623",
"Data": null
}


...全文
3012 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
自渡,难渡。 2020-03-30
  • 打赏
  • 举报
回复
引用 33 楼 xiaoxiangqing 的回复:
报500的错误,就是程序内部处理出了问题,你没有用try处理就会这样
代码和服务器都没问题, 而是他们在全局配置类里面引用了一个第三方日志中间件,导致的 这就导致了,有概率出现 http:500,然后数据返回成功。大多数请求都是成功的
自渡,难渡。 2020-03-30
  • 打赏
  • 举报
回复
引用 31 楼 luj_1768 的回复:
代码好像没有什么问题。很可能是系统服务方的问题。错误码500,很可能与系统延迟有关。其他的就没有什么可说的了。
代码和服务器都没问题, 而是他们在全局配置类里面引用了一个第三方日志中间件,导致的 这就导致了,有概率出现 http:500,然后数据返回成功。大多数请求都是成功的
xiaoxiangqing 2020-03-28
  • 打赏
  • 举报
回复
报500的错误,就是程序内部处理出了问题,你没有用try处理就会这样
自渡,难渡。 2020-03-26
  • 打赏
  • 举报
回复
引用 27 楼 Ma-Aici 的回复:
他返回的code 是自定义的,不一定和响应状态码一样的,纠结啥
老哥,你看清楚题(重点)。 api 返回数据成功,但是http 报错500 后台方法是成功的
Ma-Aici 2020-03-26
  • 打赏
  • 举报
回复
他返回的code 是自定义的,不一定和响应状态码一样的,纠结啥
自渡,难渡。 2020-03-26
  • 打赏
  • 举报
回复
引用 23 楼 luj_1768 的回复:
可能是个与延迟有关的问题:你的软件服务量有多大?是否属于非重要业务?可能是系统忙的时候,就不运行这个代码了;但是也有可能是反过来的意思,就是系统需要分析调配你的软件的服务。总之,就是你的软件处于非正常运行状态。
有可能,我这个出现是因为一个中间件的问题
自渡,难渡。 2020-03-26
  • 打赏
  • 举报
回复
引用 19 楼 水边2 的回复:
如果这个站点没有做全局异常捕获,并记录日志, 直接对外抛出了500异常, 如果是Windows服务器的IIS,可以登录服务器,看下系统日志下的应用程序日志。 如果是Linux,那只能想办法改代码加日志了。 也可以登录到服务器上,用127.0.0.1尝试反复刷新看看能不能重现。
对的,我就是一步一步,记录日志。谢谢了,目前找到问题了, 在讨论怎么解决了。
自渡,难渡。 2020-03-26
  • 打赏
  • 举报
回复
引用 18 楼 正怒月神 的回复:
[quote=引用 17 楼 自渡,难渡。 的回复:] [quote=引用 16 楼 正怒月神 的回复:] [quote=引用 15 楼 自渡,难渡。 的回复:] [quote=引用 14 楼 正怒月神 的回复:] [quote=引用 13 楼 自渡,难渡。 的回复:] 我第一步骤,就是判断这个,然后直接返回
你在看看在Global.asax或者 filter中,有没有哪些针对Response统一操作的地方[/quote] 发现他们搭建这个项目的人,只注册了这个:GlobalExceptionFilter,没有其他异常过滤器[/quote] 你们使用的是 jmeter之类的并发测试工具吗?[/quote] 使用,最开始这个问题就是这里面测试出来的, 一个线程,每5秒1,出现概率 1%[/quote] 恩,那就回到了我之前提出的情况:并发问题 你们有详细的记录日志吗? 我听起来,你们可能是正式环境里,遇到这种问题, 那就可能和并发有关系了。 由于错误报的并不详细,只是服务器内部错误。 所以缺乏准确的错误信息,那么只能猜测了。 1 可能是并发访问使用了某些共享变量导致 2 可能某些访问产生了路由重定向 3 数据库操作期间是不是出问题了。[/quote] 谢谢,大佬,具体不是这个里面问题。 我通过一步一步,记录日志发现,是他们在全局配置中,注册引用的一个第三方中间件, 里面的一个list出现null,然后抛出异常的。导致了,数据返回是正常的,http抛出500
luj_1768 2020-03-26
  • 打赏
  • 举报
回复
代码好像没有什么问题。很可能是系统服务方的问题。错误码500,很可能与系统延迟有关。其他的就没有什么可说的了。
luj_1768 2020-03-26
  • 打赏
  • 举报
回复
可能是个与延迟有关的问题:你的软件服务量有多大?是否属于非重要业务?可能是系统忙的时候,就不运行这个代码了;但是也有可能是反过来的意思,就是系统需要分析调配你的软件的服务。总之,就是你的软件处于非正常运行状态。
自渡,难渡。 2020-03-26
  • 打赏
  • 举报
回复
引用 29 楼 Ma-Aici 的回复:
[quote=引用 28 楼 自渡,难渡。 的回复:] [quote=引用 27 楼 Ma-Aici 的回复:] 他返回的code 是自定义的,不一定和响应状态码一样的,纠结啥
老哥,你看清楚题(重点)。 api 返回数据成功,但是http 报错500 后台方法是成功的[/quote] 500也是可以携带回执报文的好么,后端在编写接口的时候,返回的状态码和回执的内容有出入也是有这种情况的。比如有时候,前端要求我返回错误信息的时候,也用200 的状态码,通过以下代码,就可以模拟出你的情况,是我自己没看清楚题目,还是你自己不理解我说的? [/quote] 你这种是人为的,是需求这样处理的。 但是我们的不是,我们的需求是http 200 code 也是200. 然后如果你的一个项目,不是人为出现这样的情况。 你还能轻松说出:“他返回的code 是自定义的,不一定和响应状态码一样的,纠结啥” 不要把一个bug 想的太简单
Ma-Aici 2020-03-26
  • 打赏
  • 举报
回复
引用 28 楼 自渡,难渡。 的回复:
[quote=引用 27 楼 Ma-Aici 的回复:] 他返回的code 是自定义的,不一定和响应状态码一样的,纠结啥
老哥,你看清楚题(重点)。 api 返回数据成功,但是http 报错500 后台方法是成功的[/quote] 500也是可以携带回执报文的好么,后端在编写接口的时候,返回的状态码和回执的内容有出入也是有这种情况的。比如有时候,前端要求我返回错误信息的时候,也用200 的状态码,通过以下代码,就可以模拟出你的情况,是我自己没看清楚题目,还是你自己不理解我说的?
  • 打赏
  • 举报
回复
不错嘛 给你歌赞
正怒月神 2020-03-25
  • 打赏
  • 举报
回复
引用 17 楼 自渡,难渡。 的回复:
[quote=引用 16 楼 正怒月神 的回复:] [quote=引用 15 楼 自渡,难渡。 的回复:] [quote=引用 14 楼 正怒月神 的回复:] [quote=引用 13 楼 自渡,难渡。 的回复:] 我第一步骤,就是判断这个,然后直接返回
你在看看在Global.asax或者 filter中,有没有哪些针对Response统一操作的地方[/quote] 发现他们搭建这个项目的人,只注册了这个:GlobalExceptionFilter,没有其他异常过滤器[/quote] 你们使用的是 jmeter之类的并发测试工具吗?[/quote] 使用,最开始这个问题就是这里面测试出来的, 一个线程,每5秒1,出现概率 1%[/quote] 恩,那就回到了我之前提出的情况:并发问题 你们有详细的记录日志吗? 我听起来,你们可能是正式环境里,遇到这种问题, 那就可能和并发有关系了。 由于错误报的并不详细,只是服务器内部错误。 所以缺乏准确的错误信息,那么只能猜测了。 1 可能是并发访问使用了某些共享变量导致 2 可能某些访问产生了路由重定向 3 数据库操作期间是不是出问题了。
CShne 2020-03-25
  • 打赏
  • 举报
回复
这个看过去,根本看不懂,是真的难,太难了
自渡,难渡。 2020-03-25
  • 打赏
  • 举报
回复
引用 16 楼 正怒月神 的回复:
[quote=引用 15 楼 自渡,难渡。 的回复:] [quote=引用 14 楼 正怒月神 的回复:] [quote=引用 13 楼 自渡,难渡。 的回复:] 我第一步骤,就是判断这个,然后直接返回
你在看看在Global.asax或者 filter中,有没有哪些针对Response统一操作的地方[/quote] 发现他们搭建这个项目的人,只注册了这个:GlobalExceptionFilter,没有其他异常过滤器[/quote] 你们使用的是 jmeter之类的并发测试工具吗?[/quote] 使用,最开始这个问题就是这里面测试出来的, 一个线程,每5秒1,出现概率 1%
正怒月神 2020-03-25
  • 打赏
  • 举报
回复
引用 15 楼 自渡,难渡。 的回复:
[quote=引用 14 楼 正怒月神 的回复:] [quote=引用 13 楼 自渡,难渡。 的回复:] 我第一步骤,就是判断这个,然后直接返回
你在看看在Global.asax或者 filter中,有没有哪些针对Response统一操作的地方[/quote] 发现他们搭建这个项目的人,只注册了这个:GlobalExceptionFilter,没有其他异常过滤器[/quote] 你们使用的是 jmeter之类的并发测试工具吗?
自渡,难渡。 2020-03-25
  • 打赏
  • 举报
回复
引用 14 楼 正怒月神 的回复:
[quote=引用 13 楼 自渡,难渡。 的回复:] 我第一步骤,就是判断这个,然后直接返回
你在看看在Global.asax或者 filter中,有没有哪些针对Response统一操作的地方[/quote] 发现他们搭建这个项目的人,只注册了这个:GlobalExceptionFilter,没有其他异常过滤器
正怒月神 2020-03-25
  • 打赏
  • 举报
回复
引用 13 楼 自渡,难渡。 的回复:
我第一步骤,就是判断这个,然后直接返回
你在看看在Global.asax或者 filter中,有没有哪些针对Response统一操作的地方
自渡,难渡。 2020-03-25
  • 打赏
  • 举报
回复
引用 12 楼 正怒月神 的回复:
[quote=引用 11 楼 自渡,难渡。 的回复:] 测试 [quote=引用 10 楼 正怒月神 的回复:] [quote=引用 9 楼 自渡,难渡。 的回复:] [quote=引用 6 楼 正怒月神 的回复:] 有什么关系呢?
接口返回数据:
{
    "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了, 统一交给了异常处理拦截器而已。
大佬,这个接口报错500 不是每次,而是有一定几率出现。[/quote] 你们有详细的记录日志吗? 我听起来,你们可能是正式环境里,遇到这种问题, 那就可能和并发有关系了。[/quote] 测试环境也有。特别奇怪,根本不记录日志, 因为我的是成功的。所以程序不记录日志[/quote] 你看一下,“该手机号已注册”,这个逻辑出现后, 你是怎么接下来处理的。 如果是直接抛出异常,那么在异常过滤器里的代码又是如何实现的。 [/quote] 我第一步骤,就是判断这个,然后直接返回
加载更多回复(14)

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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