ASP.NET MVC折腾系列之(2)——遇到的MONO框架的两个BUG

EVA暂时封存,今天晚上开始折腾ASP.NET。

但是没太大兴致做blog,就把原来的GhostCHD找了出来,把DataCore.vb粘过来,试着做一个彩虹岛的Web数据库。

经测,Web和本机一样,程序集中的全局变量(vb.net中写为class的shared成员变量)在dll卸载前是不会回收的(只要有引用就不会回收),而关键是,在一次请求过后,程序是还在的!这和php有着本质的区别!即服务端是保存状态的(DLL在什么情况下可能被卸载还有待研究),这使得有些东西可以保存在内存中不用每次访问数据库或者文件查找。

在WebDev中调试一切正常,但在MONO中出错。

1、SPFReader,几年前写的,结构是SPFFileStream继承自FileStream,并重写其Seek、Position等函数,在其中调用基类FileStream的同名函数并做一些调整。在MONO中不能正常工作,Position出现负数,原因不明,推测可能是MONO框架在哪里把基类和重写的Position弄混了。代码改为SPFFileStream继承自Stream,FileStream作为其成员变量,问题解决。

2、MVC设置好的Routing在MONO下出现一些BUG,如条件写为/{id}.htm,但在MONO中能成功匹配1.htm、1.html、1.htma等,经查,MONO中的库基本为自己重写,而非微软版本,用微软的版本替换之,问题解决(原理上讲,只要是纯托管并且没有DllImport的DLL,都应该可以替换成微软的原版)。

Leave a Reply

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