转:Asp.Net网站项目发布到IIS后验证码不能显示的问题解决
今天发布一个WEB项目到IIS后,发现网站内所有显示验证码的位置都显示不了,一个小红叉,好像图片不能显示的样子,但我的验证码用的最常用的那种,引用一个专门生成验证码的aspx页面,看了页面的地址也是对的,实在不解。
但这个项目以前发布上来验证码是正常的,唯一的区别就是以前是直接将项目所有文件都COPY到指定的IIS目录下,而这次用了VS自带的发布功能,看来问题就出在这了。于是我照以前的方法做了一次,真的OK,突然想到那个验证码页面是从其他项目直接拖过来用的,难道不兼容?检查了他的aspx代码,果然看到了一个不起眼的区别:CodeFile,突然想到以前曾经有过页面运行报错,后来改了这个就OK了,哎,再改吧,将CodeFile改为CodeBehind后,运行,可爱的验证码居然真的出来了。
看似毫不相关的问题居然联系在一起了,想想一般有两种情况会导致这个问题:
1、项目经过升级后,项目里的aspx页面的CodeFile没有改为CodeBehind;
2、项目里有旧版本VS编写的aspx页面(如果记是没错的话,VS2003用的就是CodeFile格式),那么需要手动将CodeFile改为CodeBehind。
上述两种情况都是基于使用VS自带的项目发布功能后发生的,如果你采用原始的全部COPY项目所有文件,则不会出现此问题,原因在于CodeFile意为指向对应的aspx.cs物理文件,而发布的时候如果选择”仅发布程序需要的文件“,则不会COPY所有cs文件,因此实际是找不到cs文件引起的验证码页面运行异常。而CodeBehind意为引用对应的类库,即只需生成的DLL即可工作,就这么简单。