當使用IE9或IE10下載檔案時,IE的下載管理會先出現「無法下載....」,須按「重試」後才能順利儲存檔案。

解決方式為將處理檔案Stream的下載程式最後的Response.Close(),改成Response.End(),即可正常提供IE9、IE10下載。
test5.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test5.aspx.cs" Inherits="test5" debug="True" %>
<!DOCTYPE html>
<html>
<head>
<title>TEST</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Button ID="Button1" runat="server" Text="下載" OnClick="Button1_Click"/>
<asp:Label ID="Label99" runat="server" Text=""></asp:Label>
</form>
</body>
</html>
test5.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;
using System.IO;
public partial class test5: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
}
}
protected void Button1_Click(object sender, EventArgs e) //儲存
{
FileDownload_2012(Page, "c://test.ppt");
}
public static bool FileDownload_2012(Page Page, string FullFileName)
{
string path = FullFileName;
if (File.Exists(path))
{
System.IO.Stream iStream = null;
byte[] buffer = new Byte[10000];
int length;
long dataToRead;
string filepath = path;
string filename = HttpUtility.UrlEncode(Path.GetFileName(filepath));
try
{
iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read);
dataToRead = iStream.Length;
Page.Response.ContentType = "application/octet-stream";
Page.Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
while (dataToRead > 0)
{
if (Page.Response.IsClientConnected)
{
length = iStream.Read(buffer, 0, 10000);
Page.Response.OutputStream.Write(buffer, 0, length);
Page.Response.Flush();
buffer= new Byte[10000];
dataToRead = dataToRead - length;
}
else
{
dataToRead = -1;
}
}
}
catch (Exception ex)
{
Page.Response.Write("Error : " + ex.Message);
}
finally
{
if (iStream != null)
{
iStream.Close();
}
//Page.Response.Close();
Page.Response.End(); //使用Response.Close()會導置IE10無法下載,需按重試才可以下載
}
return true;
}
return false;
}
}