2012-08-22 130 views
1

我寫了一個文件下載代碼,但當我在項目中啓動它時出現此錯誤。只有這個代碼工作得很好。但是在複雜的項目中出現這個錯誤。你能幫忙嗎? 這裏是下載代碼Microsoft JScript運行時錯誤:由於錯誤導致無法完成操作c00ce514

string fileUrl = @filePath + "\\" + _DownloadableProductFileName; 
      string newFileName = _DownloadableProductFileName; 
      FileStream fs = new FileStream(fileUrl, FileMode.Open, FileAccess.Read); 
      byte[] buffer = new byte[(int)fs.Length]; 
      fs.Read(buffer, 0, (int)fs.Length); 
      fs.Close(); 
      Response.Clear(); 
      Response.AddHeader("Content-Length", buffer.Length.ToString()); 
      Response.AddHeader("Content-Disposition", "attachment; filename=" + newFileName); 
      Response.BinaryWrite(buffer); 
      Response.End(); 

和錯誤代碼是

Microsoft JScript runtime error: Could not complete the operation due to error c00ce514.

這裏發生錯誤。

get_responseData: function XMLHttpExecutor$get_responseData() { 
    /// <value type="String" locid="P:J#Sys.Net.XMLHttpExecutor.responseData">The text of the response.</value> 
    if (arguments.length !== 0) throw Error.parameterCount(); 
    if (!this._responseAvailable) { 
     throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_responseData')); 
    } 
    if (!this._xmlHttpRequest) { 
     throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_responseData')); 
    } 

    return this._xmlHttpRequest.responseText; //here throw error 
}, 
+0

什麼是文件路徑聲明爲按鈕的名稱?也是什麼值,請顯示你如何分配filePath。你可以調試這個以及讓我們知道哪些代碼錯誤正在發生..你需要簽出你正在使用的.aspx文件javascript – MethodMan

+0

filepath和fileName值是正確的。我已經創建了一個新項目。我在頁面上添加一個按鈕,按鈕單擊事件正好在上面。它可以工作,但在我的主項目中它非常複雜,我收到了這個錯誤。 filePath是一個字符串和值=「D:\\ Deneme \\ C001 \\ Test.jpg」 –

+0

如果它工作正常..那麼你爲什麼發佈的代碼工作..?你讓我感到困惑,在代碼中,錯誤代碼發生在哪裏..複雜或不是你應該調試代碼..不只是「代碼和GO」,因爲我們想說.. – MethodMan

回答

0

只適用於協議(兩年遲到)。當您的下載代碼放置在執行異步回發的更新面板中時發生該錯誤。您必須確保傳遞二進制文件的請求始終執行同步回發,以便瀏覽器能夠解釋二進制結果文件(而不是預期HTML片段的XMLHttpExecutor)。

解決方案:將您的按鈕作爲PostBackTrigger或註冊

ScriptManager.GetCurrent(Page).RegisterPostBackControl(yourButton) 
相關問題