2010-03-06 22 views
16

He leído varias preguntas que explican cómo manejar cargas de archivos en asp.net mvc. Estoy tratando de enviar tanto el archivo como los campos de formulario que lo describen. Ese podría ser el problema. Voy a ir a escribir el código:Error de "conexión restablecida por servidor" en asp.net mvc cargar código de archivo después de enviar

Ver código:

<% 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> 

<% } %> 

controlador de código:

[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");    
} 

He visto varios ejemplos, pero no he encontrado uno que está tratando para enviar un archivo y otros datos de formulario. Algunas otras cosas de la nota es que otros ejemplos parecen no poner un atributo HttpVerb en el método de acción en absoluto y tienen una cadena de parámetros vacía. Los archivos que estoy tratando de aceptar serán archivos de video de varios tipos, pero pueden estar entre 100 y 300 mb. Los archivos que he intentado usar (localmente) han sido bastante pequeños comparativamente (50 o más mb).

Sé que se me ha preguntado, pero siento que mi problema aquí es diferente de alguna manera. Cuando envío la página veo:

La conexión se restableció

La conexión con el servidor se restableció mientras que la página se cargaba.

+0

¿Se ejecuta el código del controlador? – ZippyV

+0

Ahora que lo mencionas, no es así. Tengo varios puntos de quiebre, pero ninguno de ellos se alcanza. Si elimino el tipo de entrada = parte del archivo de la vista, el código se ejecuta correctamente y se alcanza la parte del controlador. – jason

+1

Por cierto, es "ASP.NET", una palabra. –

Respuesta

25

¿Ha ajustado el maxRequestLength en el archivo web.config? El problema es que el tamaño de la solicitud es mayor que el valor que ha proporcionado. Cambie maxRequestLength en la sección httpRuntime de la sección de configuración de system.web de su web.config para aceptar valores mayores.

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

También deberá prestar atención al valor de tiempo de espera.

¡Buena suerte !.

+0

Este fue el problema. ¡Gracias! – jason

0

Puede haber un tiempo de espera en el servidor web porque el envío del archivo lleva demasiado tiempo. Verifique la configuración de su servidor web.

+1

Este mensaje ocurre inmediatamente después del envío. Es literalmente milisegundos más tarde. – jason

Cuestiones relacionadas