問題:
ASP.NET網(wǎng)站中用到一個(gè)FlashUpload上傳控件,在本地IIS和別人機(jī)子上測(cè)試都能正常使用,但放到服務(wù)器上Flash就不能正常顯示了,查看控件生成的html代碼,有下面的一段:
vlaue="/WebResource.axd?d=GvoIQ70Gti0xmxaNwXnzK1tIaZtYgTTvW_fywzsjWOGckn0x_7_oFMxxl7xedHRP0&t=633752332420000000"
這個(gè)是指定Flash文件的路徑,因?yàn)镕lash文件是嵌入控件DLL文件中的,因此要使用WebResource.axd來訪問這個(gè)資源。根據(jù)網(wǎng)上的說明,可以使用HostName + WebResource URL的方式來訪問這個(gè)資源,我分別在本機(jī)和服務(wù)器上做了實(shí)驗(yàn),發(fā)現(xiàn)本地IIS能正常顯示Flash而服務(wù)器則不能。
原因:
首先要清楚WebResource.axd是什么。。。根據(jù)MSDN和網(wǎng)上的說明,WebResource.axd是在Web.config文件中定義的一個(gè)httpHandler,默認(rèn)情況下是在.net framework安裝位置CONFIG文件夾下的web.config中定義的。也就是說WebResource.axd并不是個(gè)實(shí)際存在的文件,而是通過動(dòng)態(tài)調(diào)用由它來提取assembly中的WEB資源。但如果IIS中并未定義.axd文件的映射或者在定義的地方勾選了”檢查文件是否存在“,這都會(huì)導(dǎo)致WebResource.axd不能正常使用。當(dāng)使用this.textbox1.Focus()方法使文本框自動(dòng)獲取焦點(diǎn)時(shí),也會(huì)在客戶端html代碼中產(chǎn)生調(diào)用assembly中javascript代碼的語句,也就肯定會(huì)用到WebResource.axd 了,這時(shí)候的典型狀況就是在IE狀態(tài)欄左下角出現(xiàn)黃色驚嘆號(hào),點(diǎn)擊后彈出
查看網(wǎng)頁源代碼找到122行會(huì)看到
<script type="text/javascript">
<!--
WebForm_AutoFocus('tbxName');// -->
</script>
往上看會(huì)找到
<script src="/WebResource.axd?d=p8QWZ5nrxhDrOm_Cj7Ze6djvsLMks6CAWxBLdMEw2JM1&t=633386292203125000" type="text/javascript"></script>
原因和前面的描述是一樣的。
解決:
查看IIS的配置(如果不是本地就得聯(lián)系空間服務(wù)商),在應(yīng)用程序配置中查找.axd映射,如果沒有就新建,映射路徑和.aspx一樣,注意不要勾選”檢查文件是否存在“,確定后測(cè)試下效果。如果已存在映射就檢查下路徑是否正確以及有沒有勾選”檢查文件是否存在“,問題應(yīng)該能夠解決。