[ExternalException (0x80004005): A generic error occurred in GDI+.]
   IpitchitImageHandler.Data.ImageRepository.AddNewTempImage(Stream image, String extension, Guid PageId, Guid ImageId, ImageTransformCollection toDoTransforms) +1967
   IpitchitImageHandler.Data.ImageRepository.AddNewTempImage(Stream image, String extension, Guid PageId, Guid ImageId) +85
   IpitchitWeb.Sell.Controls.UploadImagesSubstep.UploadImages(Object sender, EventArgs e) in F:\Documents and Settings\Vjeran\My Documents\Visual Studio 2008\Projects\Ipitchit\IpitchitWeb\Sell\Controls\UploadImagesSubstep.ascx.cs:88
   System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e) +111
   System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +79
   System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +175
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565

mi código es:

public void AddNewTempImage(Stream image, string extension, Guid PageId, Guid ImageId, 
ImageTransformCollection toDoTransforms)
{
//mapping steam to memory stream so it does support the seek
MemoryStream targetStream = new MemoryStream(ReadStream(image, 1024));
Image ImageToTransform=null;
Image transformedImage = null;
string storagePath = ImageTransformManager.Config.StorageServerPhysicalPath;
Uri storageUrl = new Uri(ImageTransformManager.Config.StorageServerUrl);
//string TempPath = Path.Combine(storagePath, GenerateFileName(extension));
//SaveStream(TempPath, image);
//File.WriteAllBytes(TempPath, ReadStream(image, 1024));
if (!HttpContext.Current.User.Identity.IsAuthenticated)
throw new Exception("Nonauthenticated users image submition is not supported");
try
{            
foreach (ImageTransform transform in toDoTransforms)
{
ImageRepositoryTempImage newimage = new ImageRepositoryTempImage();
newimage.ImageGuid = ImageId;
newimage.PageGuid = PageId;
newimage.CreatedBy = HttpContext.Current.User.Identity.Name;
newimage.CreatedDate = DateTime.UtcNow;
newimage.Format = transform.OutputType;
newimage.Width = transform.Width;
newimage.Height = transform.Height;
newimage.Watermark = transform.UseWaterMark;
string filename = GenerateFileName(transform.OutputType);
string fullStoragePath = Path.Combine(storagePath, Path.Combine(transform.StorageFolder, filename));
string fullStorageUrl = CombineUri(storageUrl, Path.Combine(transform.StorageFolder, filename));
newimage.PhysicalStoragePath = fullStoragePath;
newimage.StoragePath = fullStorageUrl;
CheckOrAddImageTransform(transform);
var ImgRepTransform = GetTransformation(transform);
newimage.ImageRepositoryTransformation = ImgRepTransform;
newimage.TransformId = ImgRepTransform.Id;
Bitmap uploaded = new Bitmap(image);
ImageToTransform = (Image)uploaded.Clone();
uploaded.Dispose();
transformedImage = transform.Transform(ImageToTransform);
AddNewTempImage(newimage);
//adding named watermark and transformation
string wname = ImageTransformManager.Config.WaterMarkName;
string wpath = ImageTransformManager.Config.WaterMarkPath;
ChechOrAddWaterMark(wname, wpath);
if (!(string.IsNullOrEmpty(wname) && string.IsNullOrEmpty(wpath)))
newimage.ImageRepositoryWaterMark = GetWatermark(wname, wpath);
transformedImage.Save(fullStoragePath, GetFormat(newimage.Format));
}
}
catch (System.Exception ex)
{
ErrorHandling.LogErrorEvent("Add new temp image method", ex);
throw ex;
}
finally
{
//File.Delete(TempPath);
if (ImageToTransform!=null)
ImageToTransform.Dispose();
image.Dispose();
targetStream.Dispose();
if (transformedImage != null)
transformedImage.Dispose();
}
}

En mi máquina local todo funciona, pero que pasa.. en el server (2003) – tengo los permisos de la carpeta .. y todo…

Se puede indicar la línea donde se produce la excepción?

OriginalEl autor Vjeran | 2009-06-25

10 Comentarios

  1. 26

    Odio a ese error con una pasión.
    Error genérico es, posiblemente, la más inútil de la descripción del error que se ha escrito jamás.

    Cuando me he encontrado con el problema como siempre se ha relacionado con el archivo IO.

    Aquí está la lista de las correcciones que me mantengo en mis notas – No estoy seguro de si estas se aplican, pero que suele hacer el truco para mí.

    • De verificación ruta de acceso del Archivo
      • Asegúrese de que el directorio padre existe
      • Asegurarse de que la ruta incluye tanto el nombre de archivo y extensión
      • Uso del servidor.MapPath() para crear la ruta de acceso
    • Asegúrese de que el archivo no se ha escrito de regreso a su fuente. Cierre y vuelva a abrir la corriente si es necesario.

    Mis disculpas si me robaron esta lista desde algún otro lugar. Ha sido en mi notebook por un tiempo y no recuerdo de donde vino.

    De hecho fue una falta de camino.
    Yip – cenizas de nuevo.. la ruta no existe.. gracias!
    +1 para odiar con pasión! También he tenido este error de que falta un camino.
    +1, de Hecho, era mi ruta de archivo como. La ruta de acceso al directorio era la correcta, pero no había logrado poner el nombre de archivo en la ruta.
    Esto funcionó para mí: hanselman.com/blog/… (crea un intermediario secuencia de la imagen, antes de escribir a la secuencia de Respuesta)

    OriginalEl autor Kelly Gendron

  2. 1

    Todos aquí (y en este sitio) se ha hablado de esto ya que debido a un error de permisos. He tropezado con otro sabor: la memoria. Corrí fuera de la memoria y comenzó a recibir este error. Así que tenlo en cuenta como otra fuente potencial de error.

    En mi caso particular yo estaba corriendo en una .NETO de la aplicación, y se ejecuta en contra de un número de hilos (par suficiente que yo no estaba siendo retenido en exceso por el GDI+ de todo el proceso de bloqueo). La adición de un «GC.Collect()» después de las principales tareas de acabado no parece afectar a la velocidad de mucho, pero lo hizo de deshacerse por completo de la salida de errores de memoria.

    OriginalEl autor Gordon

  3. 0

    Yo solo tuve un problema similar (misma excepción) en mi sitio web alojado en: resultó ser un problema de permisos, el ASP.NET la cuenta estaba tratando de leer los archivos de imagen a partir de un directorio fuera de su alcance.

    Le sugiero que compruebe los permisos, así como la <trust> elemento en la web.de configuración, se debe ajustar a «Medio» o superior dependiendo de donde se encuentran los archivos.

    OriginalEl autor Jakob Gade

  4. 0

    Este me siguió por un largo tiempo. Sí, usted puede comprobar los permisos, pero lo que también debe hacer es deshacerse de su mapa de bits correctamente.

    bitmap.Dispose();

    OriginalEl autor CodeSpeaker

  5. 0

    estoy de acuerdo permisos es el problema aquí.

    servicio de red, tal vez ?

    OriginalEl autor

  6. 0

    Tengo el mismo error y ahora Google me ayudan a encontrar la respuesta:
    Cargar/Guardar mapa de bits hace que el archivo bloqueado.

    Solución es crear el mapa de bits, guardar y dejar de lanzamiento:

    De mapa de bits tmp = new Bitmap(bitmapToBeSaved);
    tmp.SaveToFile(fileName);

    OriginalEl autor

  7. 0

    Es su máquina local Vista o Windows 7, y el servidor de Windows Server 2003? Creo que el GDI+ aplicación es diferente, y no ver el error en el más reciente de los sistemas operativos. Sólo estoy ejecutando en este tema ahora, y esa es una de las ideas que he encontrado.

    OriginalEl autor Mark Richman

  8. 0

    Asegúrese de IIS_WPG tiene la correcta permisos en su carpeta de carga y también ASPNET.

    Yo sólo tenía el mismo problema y se ha solucionado.

    No te olvides de propagar los permisos a través de su sub carpetas si es necesario ( puede que se me han olvidado que.. 🙂 )

    OriginalEl autor Andrew

  9. 0

    No utilice camino directo

        System.Drawing.Image img = Base64ToImage(_ImagePath);
    img.Save(_attachmentPath, ImageFormat.Jpeg);

    Uso Del Servidor.MapPath y va a crear el Directorio Si es necesario

        System.Drawing.Image img = Base64ToImage(_ImagePath);
    img.Save(Server.MapPath(_attachmentPath), ImageFormat.Jpeg);

    OriginalEl autor sam

  10. 0

    Por favor, asegúrese sobre el camino que se está utilizando para las imágenes,yo también enfrentan el mismo error.Comprobar todas las rutas de acceso que esté utilizando.

    OriginalEl autor gofor.net

Dejar respuesta

Please enter your comment!
Please enter your name here