Tengo un sitio web en el IIS 7 entorno de alojamiento compartido. Se está ejecutando .NET 3.5. Tengo un botón de descarga para descargar un archivo desde el servidor.

Cuando me localmente implementar esta aplicación en IIS 6, funciona muy bien. En el IIS 7 servidor de alojamiento compartido, se produce la excepción.

El identificador no es válido. (Excepción de HRESULT: 0x80070006 (E_HANDLE))
Descripción: se produjo Una excepción no controlada durante la ejecución de la solicitud web actual. Por favor, revise la traza de la pila para obtener más información sobre el error y dónde se originó en el código.

Sistema.En tiempo de ejecución.InteropServices.COMException: El identificador no es válido. (Excepción de HRESULT: 0x80070006 (E_HANDLE))

COMException (0x80070006): El identificador no es válido. (Excepción de HRESULT: 0x80070006 (E_HANDLE))] [HttpException (0 x 80004005): se ha producido Un error al comunicarse con el host remoto. El código de error es 0x80070006.]

Cómo puede ser resuelto?

string strRequest = Convert.ToString(Request.QueryString.Get("file"));
System.IO.FileInfo file = new System.IO.FileInfo(strRequest);
if (file.Exists)
{
    Response.Clear();
    Response.ContentType = ReturnExtension(System.IO.Path.GetExtension(file.Name));
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + file.Name);
    Response.TransmitFile(strRequest);
    Response.End();
    HttpContext.Current.ApplicationInstance.CompleteRequest();
    //DownloadFile(file.FullName, file.Name);
}
  • An error occurred while communicating with the remote host. The error code is 0x80070006.
  • Yo voy a adivinar que este es un problema de permisos debido a su hosting compartido.
  • Por favor, dime qué permiso debe ser otorgado?
InformationsquelleAutor Salman Roy | 2011-10-12

6 Comentarios

  1. 14

    Crear una .archivo bat, poner el siguiente comando y ejecutar el archivo. Va a matar a todos los webserver de los procesos y debería solucionar el problema. Yo tenía el mismo problema y funciona para mí. Gracias

    taskkill  /fi "imagename eq webdev.webserver40.exe" 
    • webdev.webserver40.exe es el dev servidor web integrado en Visual Studio ¿no? ¿Cómo se va a ayudar?
    • Sí finalizando el servicio me ayudó demasiado.Yo lo hice manualmente. La causa real es la «cruz hilo de la operación no está permitida» para mí. Visual Studio servidor de desarrollo de falla para este estado.Creo que más de uno se ejecuta el servicio y la cruz de rosca problema se produce.
    • Reinicié mi servidor web y que se detuvo la excepción de que se produzcan. Todavía no estoy seguro de cómo evitar este error, aunque.
  2. 12

    He encontrado una solución desde el siguiente enlace:

    http://forums.asp.net/t/1387967.aspx?How+to+create+a+flipcart+like+panel+for+showing+products+in+gridview

    if (file.Name == fileName)
    
    {
         Response.ClearContent();
         Response.AddHeader("Content-Disposition", "attachment; filename=" + file.Name);
         Response.AddHeader("Content-Length", file.Length.ToString());
         Response.TransmitFile(file.FullName);
         //Response.End(); Will raise that error. this works well locally but not with IIS
         Response.Flush();//Won't get error with Flush() so use this Instead of End()
    
    
    }
    • Tenga en cuenta que la Respuesta.End() es llamado automáticamente cuando la página de ejecución es completa, por lo que esta respuesta puede aplicar incluso si usted no llama explícitamente la Respuesta.End(). También tenga en cuenta que el uso de la Respuesta.TransmitFile() sin Respuesta.Flush() trabajará en Visual Studio, pero no funciona cuando se implementa en IIS.
    • De hecho, el código anterior funciona cuando casi nada más trabajado. Estuve a punto de ir pensador con los usuarios de IIS en un servidor de producción con muchos usuarios activos que estaba trabajando perfectamente bien (que sabe lo de jugar con la que los usuarios pueden romper) ojalá pudiera darle más UpVotes!
  3. 3

    Acabo de resolver este problema en nuestro medio. Tenemos la suplantación encendida y tener el grupo de aplicaciones que se ejecuta como ApplicationPoolIdentity.

    Problema fue causado por la aplicación de la identidad del grupo no tiene acceso de lectura al archivo de código fuente, incluso aunque el usuario suplantado hizo tener acceso al archivo. Lo que hizo que esta difícil de resolver es que si el usuario y la aplicación de la piscina no tienen acceso a obtener un permiso de acceso de error.

  4. 2

    EDICIÓN: Perdió la parte acerca de la carga de la página bien inicialmente. No estoy exactamente seguro de lo que se pasa en los de su cadena, pero, ¿has probado a utilizar el Servidor.MapPath? Así que en lugar de

    System.IO.FileInfo file = new System.IO.FileInfo(strRequest);

    tiene

    System.IO.FileInfo file = new System.IO.FileInfo(Server.MapPath(strRequest));

    Hágamelo saber si eso ayuda.

    • no no es una versión probelm yo pienso que si es una versión probelm todo el sitio va a dar el mismo error, pero no es el caso, cada cosa está funcionando bien, excepto este , yo más investigar el problema y me encontré con que este error se produce cuando hago uso de la Página.Redirect(«descargar.aspx»); yo intente con otra metodología puedo abrir una descarga.aspx en javascript ventana emergente que funciona bien.todavía no puedo entender la poblem,este método sólo funciona bien en firefox, en internet explorer sólo popup abierto y de diálogo de descarga no aparece 🙁
  5. 2

    En mi caso yo estaba tratando de escribir y leer este archivo:

    var path = System.IO.Path.GetTempFileName();

    He utilizado el siguiente código y funcionó. Creo que el usuario de IIS faltaba el permiso para escribir o leer desde el archivo temporal.

    var path = Server.MapPath(@"~\App_Data\Stats");
    Directory.CreateDirectory(path);
    path = Path.Combine(path, String.Format("{0}.csv", Guid.NewGuid()));
    
    using (var streamWriter = new StreamWriter(path))
    using (var csvWriter = new CsvHelper.CsvWriter(streamWriter))
    {
        csvWriter.Configuration.Delimiter = csvWriter.Configuration.CultureInfo.TextInfo.ListSeparator;
    
        csvWriter.WriteRecords(rounds);
    }
    
    return File(path, "text/csv", "Stats.csv");
  6. 0

    En mi caso esto ocurrió durante un determinado usuario de inicio de sesión único. Todos los otros usuarios tenían que trabajar.

    El problema era un espacio en blanco adicional del usuario LoginEmail.

    Esto sucedió en una aplicación MVC, que estaba usando Asp.net Identidad y Suplantación de identidad para descargar un archivo de excel desde un directorio que vive en el servidor de hosting.

    Cosas raras!

Dejar respuesta

Please enter your comment!
Please enter your name here