问题:
今天遇到一个问题,用Fileupload控件上传Excel文件,用一个button控件调用“FileUpload1.SaveAs”方法,点击按钮后出现服务器500错误。如下图:
解决方法:
在button事件打断点,调试代码,发现根本没进事件,直接出现500错误,应该不是代码bug。
后来发现文件4.28M,是不是超过默认限制了(默认最大好像是4M)?在配置文件的<system.web>节点下加入了<httpRuntime maxRequestLength="10240" requestLengthDiskThreshold="100"/>代码,然后再调试,代码正常运行。
总结:
仔细一想,也不难理解。在点击button,页面回发到服务器时,asp.net内部机制应该是直接将文件上传至服务器。虽然感觉上Fileupload的saveas方法才是上传文件,但实际上只要回发页面文件就已经上传了。否则,在这个生命周期中就没有机会上传了。
之所以直接报500错误,是iis根据配置,报出的错误。这时,还没轮到后台代码接手,所以才出现了上面根本没进断点的现象。
看来服务器控件的坑还是挺大的,出现奇怪的问题时,一定多想想其实现原理,问题就不难解决了。