这两天在使用加载unity3d 编译包的过程中报错,文件始终加载不进去,而在前端加载项目的过程中,整个项目都能正常的执行,直觉感觉我,这个问题和.net项目的开发环境相关?但自己不熟悉.net环境,毕竟自己只是一枚前端,那如何来处理这个问题呢?
一开始,直接和后端沟通,说这个问题可能和.net环境有关,但是因为服务端和.net都熟悉,也无法说出个所以然,所以只能先自己找办法处理,运用一些基础的服务端经验去处理这个问题。现在回顾下自己整个体的处理过程。
回顾目标
在.net环境下加载unity 3d编译文件,保证.unityweb文件能正常访问。
对比结果
基于先前做了一个加载unity 3d模型的项目的经验,将两个项目从项目环境、服务器、前端、后端四个角度进行对比。根据对比的结果,发现主要的问题就是前端所处的环境有差异,前端是处在后端的.net项目环境的根目录里面的,那么主要的问题就是项目环境的文件。具体的问题就需要一步步排查。
叙述过程
在检查环境的过程中,只能一步步排查。
首先是确认unity 3d变异的文件是正常的,自己直接将先前项目的编译包下载下来,放到当前的项目中,程序还是跑不起来,说明不是这个问题。
根据文件读取404报错,发现问题的原因在于文件读取不到,那么可能有三个原因:一、文件权限没给到;二、项目文件禁止读取.unityweb格式文件;三、ningx禁止了.unityweb格式文件的读取。
经过一一调试,最终发现是二项目镜子读取.unityweb格式文件;那为啥读取不了.unityweb文件,但是可以读取其中的js文件了。梳理.net项目环境的搭建配置,发现其中使用的反向代理,反向代理中有限制部分文件的读取;但是在宝塔的配置中,修改不了配置,已修改,再重新启动,整个配置就还原了,除非关掉整个反向代理。
现在问题已经很明显了,需要绕过反向代理,一个是直接修改反向代理的配置,但感觉这可能还不是最根本的原因,另一个就是绕过它。直接将前后端分离,分两个域名,然后unity 3d保持配置和先前的项目配置一直就可以了;唯一麻烦的工作量比较多。
在处理过程中,一开始的情绪是比较平稳的,但是在长时间没解决问题,情绪开始有了浮动,烦躁;最后幸好寻找运维处理这个问题,寻求专业人员的帮助,最后终于寻找到最后的解决方案。
自我剖析
在这个项目中,哪些是可控的,哪些是不可控的,哪些是半可控的?
前端开发环境、后端开发环境都是半可控,因为环境基于nginx,后端基于.net这个差别不大,无非就是当前的前端环境也放入了.net根目录,要遵守.net的协议。
前端代码逻辑都是可控的。和先前的项目代码基本一致。
.net的开发协议是不可控的。最后的原因也就是在这里。
自我设问
在处理问题的过程中,自己做到了什么程度?
首先自己已经从前端的角度去分析问题,基本上找到了问题的所在,并且在后面寻求专业运维人员的帮助,将问题的关键核心梳理出来了。从前端角度,已经排查了前端所有负责的问题的根本原因,已经尽力了。
在处理过程中,有哪些没有预计到的情况出现?
.net环境运用了反向代理,并且配置过程中,配置文件不停的还原。
成功处理问题的关键是什么?
当涉及到自身的视野盲区的时候,寻找专业人员解答相关的问题。
优化调整
程序员运动问题,这是一种常态。而我们要做的是,保持平稳的心态,积极进取的心态,从多个维度去梳理问题的所在,不断尝试,一个个排查问题,相信答案就会浮现出来。