2010-03-06 36 views
16

我已經閱讀了幾個問題,解釋瞭如何在asp.net mvc中處理文件上傳。我正在嘗試提交文件以及描述它的表單字段。這可能是問題。我會去寫代碼:在提交後在asp.net mvc上傳文件代碼中獲取'通過服務器重置連接'錯誤

查看代碼:

<% using (Html.BeginForm("CreateFile", "Video", FormMethod.Post, new { enctype = "multipart/form-data" })) 

    {%> 

    <fieldset> 
     <legend>Fields</legend> 
     <p> 
      <label for="file">Filename:</label> 
      <input type="file" name="file" id="file" />    
     </p> 
     <p> 
      <label for="Password">Password:</label> 
      <%= Html.TextBox("Password")%> 
      <%= Html.ValidationMessage("Password", "*")%> 
     </p> 
     <p> 
      <label for="Description">Description:</label> 
      <%= Html.TextBox("Description")%> 
      <%= Html.ValidationMessage("Description", "*")%> 
     </p> 
     <p> 
      <label for="DateUploaded">DateUploaded:</label> 
      <%= Html.TextBox("DateUploaded")%> 
      <%= Html.ValidationMessage("DateUploaded", "*")%> 
     </p> 
     <p> 
      <label for="DateRecorded">DateRecorded:</label> 
      <%= Html.TextBox("DateRecorded")%> 
      <%= Html.ValidationMessage("DateRecorded", "*")%> 
     </p> 
     <p> 
      <input type="submit" value="Submit" /> 
     </p> 
    </fieldset> 

<% } %> 

控制器代碼:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult CreateFile(VideoDTO video, HttpPostedFileBase f) //[Bind(Exclude="VideoId")] 
{    
    foreach (string file in Request.Files) 
    { 
     HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase; 
     if (hpf.ContentLength == 0) 
      continue; 
     string savedFileName = Server.MapPath("Videos") + Path.GetFileName(hpf.FileName); 

     hpf.SaveAs(savedFileName); 
     video.FileName = hpf.FileName; 
    } 

    repository.CreateVideo(video); 
    return RedirectToAction("Index");    
} 

我見過幾個例子,不過經過一個都沒有來了,是試圖提交文件和其他表單數據。其他一些需要注意的事情是其他的例子似乎沒有在action方法上放置一個HttpVerb屬性,並且有一個空的參數字符串。我期望接受的文件將是各種類型的視頻文件,但它們可以在100-300 MB的範圍內。我嘗試使用(本地)的文件相對較小(50左右)。

我知道這已被問到,但我覺得我的問題在這裏是不同的。當我提交的頁面我看到:

連接被重置

到服務器連接被重置 而網頁被加載。

+0

控制器代碼是否被執行? – ZippyV 2010-03-06 22:42:26

+0

現在你提到它,它沒有。我有幾個突破點,但都沒有達到。如果我刪除視圖的輸入類型=文件部分,代碼運行良好,控制器部分已到達。 – jason 2010-03-07 02:01:03

+1

順便說一句,它是「ASP.NET」,一個字。 – 2010-03-07 03:45:01

回答

25

您是否調整過web.config中的maxRequestLength? 問題是請求大小大於您提供的值。將web.config的system.web config部分的httpRuntime部分中的maxRequestLength更改爲接受更大的值。

<System.Web> 
    <httpRuntime maxRequestLength="value in kilobytes" /> 
</System.Web> 

您還必須注意超時值。

祝你好運!

+0

這是問題所在。謝謝! – jason 2010-03-17 15:47:11

0

在網絡服務器上可能發生超時,因爲發送文件需要很長時間。檢查您的網絡服務器的設置。

+1

此消息在提交後立即發生。這幾乎是毫秒後。 – jason 2010-03-06 21:23:15

相關問題