问题描述
在项目部署预生产环境后,测试,报错
org.springframework.web.servlet.PageNotFound-198|Request method 'POST' not supported
本地开发环境调试OK,测试环境测试也OK,很是奇怪,为什么就部署预生产的时候,就出现这个问题呢?
直觉告诉我,应该不是程序代码的问题,如果有问题,测试环境就该有问题了
逐一排查,请求的接口里并未限制get\post,查看warn日志,除了上述错误,并无其他任何信息打印,找error日志,又一次失望了,error日志还是没有任何异常日志,测试用的curl语句,测试地址,都完全一样呀,又重新检查代码,没发现有问题,陷入迷茫中…
最后一个思路了,日志的debug模式打开,重新发起测试,这次收获很大,debug里果然出现了异常的日志,报错是某个静态类找不到,恍然大悟,部署的时候是局部更新,导致把项目中某个包下的静态类给丢失了,于是远程拷贝测试环境的某包,这样问题才得以解决
问题总结:
报不支持的请求方法,并不一定是真的不支持post或get,而是代码执行到某个地方抛异常了,生产系统中debug日志模式是关闭的,所以容易忽略日志中的错误,遇到这样的情况,一定打开debug模式看看日志