El archivo existe en el servidor usando C#, asp.net

Quiero verificar si existe un archivo en el disco del servidor y estoy usando el siguiente código

if (File.Exists(Server.MapPath("~/Jaram Images/") + Path.GetFileName(product.Pic_Url2)))
                                            {
                                                WriteError("File  exist!");

                                                //PdfProdCell = new PdfPCell(iTextSharp.text.Image.GetInstance(Server.MapPath("~/Jaram Images/") + Path.GetFileName(product.Pic_Url2)), true);
                                            }
                                            else
                                                WriteError(Server.MapPath("~/Jaram Images/") + " File doesn't exist!");

pero recibo este error:

public static void WriteError(string errorMessage)
{
    try
    {
        string path = "~/Jaram PDF/PDFS/" + DateTime.Today.ToString("dd-mm-yy") + ".txt";
        if (!File.Exists(System.Web.HttpContext.Current.Server.MapPath(path)))
        {
            File.Create(System.Web.HttpContext.Current.Server.MapPath(path)).Close();
        }
        using (StreamWriter w = File.AppendText(System.Web.HttpContext.Current.Server.MapPath(path)))
        {
            w.WriteLine("\r\nLog Entry : ");
            w.WriteLine("{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture));
            string err = "Error in: " + System.Web.HttpContext.Current.Request.Url.ToString() +
                          ". Error Message:" + errorMessage;
            w.WriteLine(err);
            w.WriteLine("__________________________");
            w.Flush();
            w.Close();
        }
    }
    catch (Exception ex)
    {
        WriteError(ex.Message);
    }

}

Log Entry : 
05/03/2012 15:50:51
Error in: http://localhost/WebStore/AdminNewAccount.aspx?role=+Administrator. Error Message:C:\inetpub\wwwroot\WebStore\Jaram Images\ File doesn't exist!

a mi función de registro le gusta esto

preguntado el 03 de mayo de 12 a las 08:05

¿Existe el archivo en Server.MapPath("~/Jaram Images/") + Path.GetFileName(product.Pic_Url2)) ...? -

primero, este no es el error real que obtienes de la excepción. En segundo lugar, mapea 3 veces el mismo archivo, ¿por qué no mapearlo la primera vez? Además, el archivo que no existe es en realidad un directorio a medida que lo escribe. Y finalmente, depure su código para ver cuál es el problema real:

No estoy seguro de cuál es el problema específico que está encontrando: tiene mucho código allí y muy pocos mensajes de error. Como comentario aleatorio, es posible que desee considerar el uso de una biblioteca de registro real en lugar de crear la suya propia. yo sugiero NRegistro o (en menor grado) log4net. Son súper fáciles de usar, súper configurables y van a ser mucho más tolerantes a fallas que cualquier cosa que escribas por tu cuenta (a menos que hagas un montón de trabajo en su código de registro). -

sí, el archivo no existe. Quiero evitar este error cuando el archivo no existe, por eso apliqué la condición If. -

@All ¿Cómo puedo verificar si existe un archivo, de modo que pueda mostrar la imagen de lo contrario, omitirlo? -

1 Respuestas

Entonces, por lo que entiendo, está recibiendo un "error" porque le dice específicamente al código que escriba un error incluso en caso de éxito. Intenta que tu código sea más fácil de leer. Configuré una página simple para probar el problema que está teniendo. En el HTML tengo:

<body>
<form id="form1" runat="server">
<div>
    <asp:Image runat="server" ID="TestPicture" />
</div>
</form>
</body>

Luego, el siguiente código está en CodeBehind. Primero verifica para asegurarse de que el archivo existe, establece la URL de la imagen en la ruta. Si el archivo no existe, simplemente establece la URL de la imagen en "".

    protected void Page_Load(object sender, EventArgs e)
    {
        string serverPath = Server.MapPath("~/Test/") + Path.GetFileName("~/Test/TestImg.jpg");
        string imgUrl = "~/Test/TestImg.jpg";
        if (File.Exists(serverPath))
        {
            TestPicture.ImageUrl = imgUrl;
        }
        else
        {
            TestPicture.ImageUrl = "";
            //TestPicture.Visible = false;
            //TestPicture.ImageUrl = "Picture Not Available.jpg";

            //or do other error checking here
        }
    }

Para mí, cuando existe el archivo, la imagen se muestra en la página web. Cuando el archivo no existe, no hay imagen disponible. Comenté algunas otras opciones que también podrían tener sentido para usted. La "Imagen no disponible.jpg" podría ser una imagen de archivo que podría usar para mostrar que una imagen no está disponible.

Si todavía tiene problemas, asegúrese de poner puntos de interrupción en su código y observe lo que realmente está sucediendo.

contestado el 08 de mayo de 12 a las 00:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.