开发环境:
VS2012 MySQL 5.5 连接器 官方MySQL Connector
错误场景:
本地完成开发后在本地VS环境测试,一切正常,在本地IIS部署后,也可以正常访问。部署到服务器后,在登陆页面验证用户信息部分发生500错误。由于是JS调用,所以页面上没有明显的错误。通过IE或者火狐调试可以发现调用页面出现500错误
页面逻辑:
Login:登陆页面,在该页面中存在一个Button,点击后用户信息通过POST方式传送至.Login/CheckUser Action进行数据验证,如果验证成功则返回TRUE,如果验证失败则返回FALSE,Login页面根据返回状态进行页面导航。
分析过程:
由于在本地VS端或者本地IIS调试正常,则可以确认,程序本身不存在错误问题。
部署后发生问题,则可以预设是由于服务器环境与本地环境配置不一致导致,这里经过检查服务器配置,发现没有问题。
缩小出错的范围:由于CheckUser无法调用返回,则可以再CheckUser全部代码外围增加try catch模块,讲异常记录在服务器文件日志中。
重复页面逻辑。发现在指定目录下生成日志文件,打开后,显示Mysql 未添加引用。但是,不应该会出现这个问题,因为本地是运行正常的,而且MYSQL 引用的是官方连接器。
最后一步到了解决问题的时候。问题出现在哪里呢?.NET MVC 工程创建的时候,有一个重要的东西就是Nuget ,该工具的作用是更新工程中所使用的引用文件(DLL),而如果我们是自己添加的DLL引用,即手动添加。则就可能不会在packages.config配置文件中增加相关DLL的引用配置。所以发生这种问题后,使用PM控制台运行如下命令:
Install-Package MySql.Data
控制台会提示更新成功,这个时候就会在packages.config配置文件中看到如下记录项:
以上操作完成后,重新部署,系统即可正常运行。
总结:
默认新建的工程,帮助增加了很多的特性,但是也隐藏了很多问题,在某些疑难确实找不到头绪的时候,需要回头来看一下是不是工程本身出现了问题。如果能够更好的学习MVC本身的实现过程,则可以理解在程序运行中出现的很多问题和根源。微软MVC项目是开源的。 代码可以领略很多精彩~