問題:
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狀態欄左下角出現黃色驚嘆號,點擊后彈出
查看網頁源代碼找到122行會看到
<script type="text/javascript">
<!--
WebForm_AutoFocus('tbxName');// -->
</script>
往上看會找到
<script src="/WebResource.axd?d=p8QWZ5nrxhDrOm_Cj7Ze6djvsLMks6CAWxBLdMEw2JM1&t=633386292203125000" type="text/javascript"></script>
原因和前面的描述是一樣的。
解決:
查看IIS的配置(如果不是本地就得聯系空間服務商),在應用程序配置中查找.axd映射,如果沒有就新建,映射路徑和.aspx一樣,注意不要勾選”檢查文件是否存在“,確定后測試下效果。如果已存在映射就檢查下路徑是否正確以及有沒有勾選”檢查文件是否存在“,問題應該能夠解決。