使用aspx中的ashx上载文件会导致超时错误



我有一个网站,我的用户可以将他们的文件上传到他们的个人资料中,但我不希望使用直接链接下载文件,所以我使用的是ashx。

我使用ashx上传App_data中的文件。这是我的代码:

int CountFile = 0;
string filename = "";
string path = Server.MapPath("~") + "App_Data";
String[] validext = { ".pdf" ,".doc",".zip"};                   
string ext = System.IO.Path.GetExtension(FileUpload1.PostedFile.FileName);
//int test = Array.IndexOf(validext, ext.ToLower());
if (Array.IndexOf(validext, ext.ToLower()) < 0)
{              
    LblMessage.ForeColor = System.Drawing.Color.Red;
    LblMessage.Text = "پسوند فایل معتبر نیست";
    return;
}
ClsSendEmail objSendEmail=new ClsSendEmail();
string[] Infotmp=new string[12];
string res = ObjRegUser.UploadArticle(Session["UserSession"].ToString(), txtArticleSubject.Text, Value[DDLSubjectGroup.SelectedIndex].ToString());
 if (res!="-1")
 {
    FileUpload1.PostedFile.SaveAs(path + "\" + res+ext);
    ObjRegUser.UpdateArticleLocation(int.Parse(res),res+ext);
    string Url = "~/Users/Default.aspx?Message=" + "فایل با موفقیت ارسال شد" + "&" + "State=True";
    // Infotmp=  ObjRegUser.SelectUserProfile(Session["UserSession"].ToString());
    //objSendEmail.SendEmail("تایید ارسال مقاله به همایش ملی سرب و روی ایران",objSendEmail.SuccessArticleUpload(Infotmp[1].ToString()+" "+Infotmp[2].ToString(),txtArticleSubject.Text),Infotmp[6]);
    Response.Redirect(Url);
 }
 else if (res == "-1")
 {
    string Url = "~/Users/Default.aspx?Message=" + "تعداد فایل ارسالی بیشتر از حد مجاز می باشد " + "&" + "State=False";
    Response.Redirect(Url);
 }     

但我有一个大问题,当我的用户想要上传他们的文件时(文件大,网速慢),连接会重置并超时。

我该怎么办?

使用现成的ASP.NET,您将无法上载巨大的文件(GB大小),因为IIS将超时或超出大小限制(读取:IIS的maxRequestLength设置)。

你有几个选择:

  1. 自定义HTTP模块

    NeatUpload是一个免费选项。

  2. Silverlight/Flash选项

    SW上载是一个免费选项。

  3. 异步分块选项

    RadAsyncUpload-Telerik的ASP.NET异步上传是一个付费选项,请查看网站的定价。

最新更新