ASP.NET MVC折腾系列之(3)——有关在Debian 5上部署LaTaleDB的各种蛋疼的事儿

作为本人第一个ASP.NET MVC的程序,LaTaleDB的1.0版本准备当作业交了去,亦准备上线部署。

然后就是各种蛋疼至死的事情。。

首先,前面文章提到的mono-apache-server是用的mono 1.9版本,即.net 2.0,不含3.5的东西,于是当我把文件上传到服务器上时,访问时直接得到了个500,就说是出错了,如果要看详细信息,在Web.config中设置customErrors的mode为Off。。

然后错误信息是缺少引用。。就把DLL的多余引用去掉,重新编译传了下,再把再缺的DLL从Windows目录里拷出来上传上去。。

然后提示无法启动编译器进程,aspx要在第一次访问时编译的,但是mono没有带vb的编译器。。

然后我火了,上mono官网去看为嘛debian没有2.6版的mono,回答是2.6在debian 6.0中有,第五代的如果想装请添加backport安装源。。

好不容易从backport安装源安装了完整的mono,结果这下更好,直接apache报500,什么网站都打不开,查apache的log,Mono-WebServer2里的异常,Google了一下,有人说到这个bug,说问题在mscorlib.dll中,有时候官方的trunk里有bug。。

然后就把自己电脑上Windows下mono的mscorlib上传了去,结果继续500,这下log写的是执行了native代码引发了保护断言,即即便是mono,在Windows下和linux下的mscorlib是不同的实现。。

这个时候我连把这次装的卸载掉都搞不定了。。回宿舍在自己机子上的debian 6.0上装。。这下是含有.net 3.5的,看上去框架没有什么严重的bug,就把整个/usr/lib/mono打包上传到服务器上了。

这次没提示缺少文件什么的了,不过还是没有编译器。。服务器上debian5也没有vb编译器的包。。再在自己电脑上安装microsoft.visualbasic.dll和vbnc,打开deb文件,看是哪几个文件,手动上传到服务器上。。

以为好了的,结果编译错误。。错误基本出在System.Web.Extension里,弄了半天也没弄好,突然无意中就感觉是不是后来拷进去的缺少的dll是不是和mono框架冲突,就把传上去的那些dll改名掉。

这下OK了,提示的是routing错误,和上次提到的一样,是System.Web.Routing的bug,把这个改回来。。

然后就说mysql找不到数据库LaTaleDB,而数据库已经导入了啊,估计是大小写吧,在web.config中把connectionString中数据库名改为小写。。

这下数据库找到了,但说找不到表,肯定依旧是大小写问题,我可不至于一个一个改吧,网上Google了一下,修改/etc/mysql/my.cnf,在[mysqld]下加入一行:lower_case_table_names=1,重启mysql,这样就不区分大小写了。。

然后终于运行成功,但是wait,物品列表的图片怎么都不透明了。。仔细看了下,是有的透明有的不透明,和源图有关,Google了下,说是mono的一个bug,把微弱的System.Drawing.dll拷上去发现这个dll里是有调用Windows API的,不能用,看来只能将就了。。

整个下来估计花了5个小时。。崩溃。。

上线的站点将在下篇文章中公布,另外1.0版本将以压缩包的形式开源,至于功能的添加,将视心情而定 = =

Leave a Reply

Your email address will not be published. Required fields are marked *