2008-10-09 9 views
6

Tengo una página something.aspx, con codebehind something.aspx.cs asociado. En ese código subyacente, quiero saber la ubicación del sistema de archivos de algo.aspx. ¿Hay alguna manera conveniente de obtenerlo?¿cómo puede una página .ASPX obtener su ruta del sistema de archivos?

Actualización: Recibí varias respuestas excelentes, que desafortunadamente no funcionó debido a otra cosa loca que estoy haciendo. Estoy codificación de información adicional sobre la URL que pase en, por lo que se parece a esto:

http://server/path/something.aspx/info1/info2/info3.xml

El servidor se ocupa de este bien (y no estoy utilizando parámetros de cadena de consulta para evitar algún otro código que no escribí). Pero cuando llamo a Server.MapPath (Request.Url.ToString()) me sale un error de que la URL completa con los segmentos de 'información' no es una ruta virtual válida.

+0

Establecer un punto de interrupción en la línea MapPath y luego inspeccionar las propiedades de Request.Url. Encontrarás muchas cosas útiles allí. –

+0

Lo haré, gracias. – Bruce

Respuesta

8
+0

¡Ganador! El objeto Request está tan mal organizado que es difícil recordar todos los lugares diferentes para cosas. –

+0

Eso hizo el truco, gracias! La línea real con la que terminé es: string servicesPath = Path.GetDirectoryName (Request.PhysicalPath) + @ "\ services \"; – Bruce

10
// File path 
string absoluteSystemPath = Server.MapPath("~/relative/path.aspx"); 
// Directory path 
string dir = System.IO.Path.GetDirectoryName(absoluteSystemPath); 
// Or simply 
string dir2 = Server.MapPath("~/relative"); 
+0

esto implica que sé cuál es la parte 'relativa', pero eso es lo que intento calcular. – Bruce

+0

Pero funciona para mí, entonces: +1 – BlaM

5

Server.MapPath es una de las formas más utilizadas para hacerlo.

string physicalPath = Server.MapPath(Request.Url); 
0

Server.MapPath(Request.AppRelativeCurrentExecutionFilePath)

Cuestiones relacionadas