我在维护一个网站,这个网站有一个上传照片到服务器的功能。以前是好用的。近来突然不可用的。通过单步执行进行调试,发现问题出在这一行:
HttpPostedFile m_File
=
Request.Files[
"
PhotoFile
"
];
每次读取出来都是null值。
我开始检查了几处都没有发现问题:1、Form表单中的encType属性没问题;2、input空间的runat属性没问题。
<
form
id
="Form1"
method
="post"
encType
="multipart/form-data"
runat
="server"
>
< input id ="PhotoFile" name ="PhotoFile" type ="file" size ="40" runat ="server" >
</ form >
< input id ="PhotoFile" name ="PhotoFile" type ="file" size ="40" runat ="server" >
</ form >
后来我又怀疑的编码问题,最后我把问题集中在了web.config文件中。里面有一个配置信息引起了我的怀疑:
<
httpModules
>
< add name ="WebbHttpModule" type ="Webb.WAVE.Controls.Upload.WebbHttpModule, Webb.WAVE.Controls.Upload" />
</ httpModules >
< add name ="WebbHttpModule" type ="Webb.WAVE.Controls.Upload.WebbHttpModule, Webb.WAVE.Controls.Upload" />
</ httpModules >
这个是因为有一个同事更新程序时引入的一个关于上传的组件Webb.WAVE.Controls.Upload.dll,这个组件的应用需要在web.config文件里加入这一行配置信息。我删除了这行信息调试通过了。
原来Webb.WAVE.Controls.Upload.dll改变了文件上传的模式。问题终于解决了。所以告诫朋友们,Webb.WAVE.Controls.Upload.dll和HttpPostedFile是不能混合使用的。