IIS与axd

问题:

ASP.NET网站中用到一个FlashUpload上传控件,在本地IIS和别人机子上测试都能正常使用,但放到服务器上Flash就不能正常显示了,查看控件生成的html代码,有下面的一段:

vlaue="/WebResource.axd?d=GvoIQ70Gti0xmxaNwXnzK1tIaZtYgTTvW_fywzsjWOGckn0x_7_oFMxxl7xedHRP0&t=633752332420000000"

这个是指定Flash文件的路径,因为Flash文件是嵌入控件DLL文件中的,因此要使用WebResource.axd来访问这个资源。根据网上的说明,可以使用HostName + WebResource URL的方式来访问这个资源,我分别在本机和服务器上做了实验,发现本地IIS能正常显示Flash而服务器则不能。

 

原因:

首先要清楚WebResource.axd是什么。。。根据MSDN和网上的说明,WebResource.axd是在Web.config文件中定义的一个httpHandler,默认情况下是在.net framework安装位置CONFIG文件夹下的web.config中定义的。也就是说WebResource.axd并不是个实际存在的文件,而是通过动态调用由它来提取assembly中的WEB资源。但如果IIS中并未定义.axd文件的映射或者在定义的地方勾选了”检查文件是否存在“,这都会导致WebResource.axd不能正常使用。当使用this.textbox1.Focus()方法使文本框自动获取焦点时,也会在客户端html代码中产生调用assembly中javascript代码的语句,也就肯定会用到WebResource.axd 了,这时候的典型状况就是在IE状态栏左下角出现黄色惊叹号,点击后弹出

IIS与axd_第1张图片

 

查看网页源代码找到122行会看到

往上看会找到

原因和前面的描述是一样的。

 

解决:

查看IIS的配置(如果不是本地就得联系空间服务商),在应用程序配置中查找.axd映射,如果没有就新建,映射路径和.aspx一样,注意不要勾选”检查文件是否存在“,确定后测试下效果。如果已存在映射就检查下路径是否正确以及有没有勾选”检查文件是否存在“,问题应该能够解决。

IIS与axd_第2张图片

你可能感兴趣的:(ASP.NET)