文件编码不一致引起的has not been pre-compiled及base class is not compatible错误
在前几次部署站点的时候,都遇到过几个奇怪的错误,往往在开发环境是运行正常的,而编译之后部署到了生产环境却出现莫名其妙错误。
一是提示文件没编译,如:
The file '/member/myupload/upload.aspx' has not been pre-compiled, and cannot be requested.
二是使用用户控件时提示基类不对,如:
The base class includes the field 'WebUserControl1', but its type (common_WebUserControl) is not compatible with the type of control (ASP.common_webusercontrol_ascx)"
三就是浏览网页时出现莫名其妙的乱码现象 。
当时费了老大功夫,在google, forums.asp.net翻了个遍都没找到解决方法。后来走投无路之下,逐个检查了文件的源文件的编码方式,终于发现出问题的几个页面是源代码文件与运行时环境web.config里约定的编码方式不符引起的。
在我们的生产环境中由于操作系统语言版本的限制,对程序的输入输出作了严格的约束,以避免用户浏览时出现乱码现象。而开发环境的配置相对比较单一,生成代码之后即使编码没有统一格式,输出也是正常的。而到了生产环境里由于默认的用户语言环境的不一致,在.Net framework运行时里就会导致找不到对应的基类等错误的出现了。