2012-01-27 30 views
6

Estoy tratando de abrir un archivo que incluye algunos datos en un directorio web que mi C# se está ejecutando. Básicamente solo lo convierte en una cadena. Intenté hacer lo siguiente ...ASP .NET C# obtener todo el texto de un archivo en la ruta web

string email = File.ReadAllText("/orderforms/email_templates/file_to_include.txt"); 

no estoy seguro de si es el método correcto, pero parece que hay un problema encauzamiento, todo el camino va a cambiar dependiendo de lo que el servidor Web que se está ejecutando.

Ésta es la configuración de directorios ...

/Classes/Page.ascx.cs (the page that tries to read the text from the 
file) 
/orderforms/<one of multiple pages execute the above class here or in a sub directory 
/orderforms/email_templates/file_to_include.txt 
/orderforms/email_templates/file_to_include2.txt 

¿Qué camino y la función debería utilizar para leer todo el contenido del archivo a una cadena?

Gracias

+1

Para su información, cada vez que un rutaDeAccesoUrl comienza con una barra ("/"), la aplicación lo interpreta como sitio ROOT, lo que significa que se coloca inmediatamente después del nombre de dominio para compilar la URL completa. Esto es diferente de la raíz de la aplicación, representada por el carácter "~" dentro de una aplicación asp.net (lado del servidor). En general, la raíz de aplicación llega a ser la misma que la raíz del sitio (cuando no hay directorios virtuales), pero también en entornos de desarrollo, generalmente hay directorios virtuales involucrados (cuando se usa IIS local), por lo que debe tener cuidado con barras diagonales. –

+0

Mi comentario anterior no se relaciona directamente con su pregunta, pero tengo la sensación de que necesita saber lo que dije. –

Respuesta

24

Prueba esto:

string email = File.ReadAllText(Server.MapPath("~/orderforms/email_templates/file_to_include.txt")) 
+3

Tienes que tener el HttpContext para hacer esto, para hacerlo tuve que agregar eso. 'string email = File.ReadAllText (System.Web.HttpContext.Current.Server.MapPath (" ~/orderforms/email_templates/file_to_include.txt "));' – ferics2

Cuestiones relacionadas