Obtener el path físico

04/03/2006 - 02:37 por Tomás Capetillo | Informe spam
¡Hola a todos!

Estoy haciendo una aplicación WindowsForm que lee un archivo de solución
(*.sln) y apartir de este leo los archivos de proyecto (*csproj ó
vbproj) y por ultimo leo las clases de los projectos y las escribo en un
documento de Word.

El problema que tengo es que no puedo obtener el path real de un
projecto web porque en el archivo de solución viene apuntando al
directorio virtual (http://localhost/WebApplication1.csproj) y lo que
necesito sería (C:\Proyectos\WebApplication1.csproj) ¿Qué clase debó
utilizar para que obtener el path físico a partil de una URL?

Preguntas similare

Leer las respuestas

#1 Marino Posadas
04/03/2006 - 11:21 | Informe spam
Hola Tomás

Prueba con MapPath.


Saludos cordiales
Marino Posadas
MCSD, MCAD, MCT
MVP Visual C#
www.ElAveFenix.net

"Tomás Capetillo" escribió en el mensaje
news:
¡Hola a todos!

Estoy haciendo una aplicación WindowsForm que lee un archivo de solución
(*.sln) y apartir de este leo los archivos de proyecto (*csproj ó vbproj)
y por ultimo leo las clases de los projectos y las escribo en un documento
de Word.

El problema que tengo es que no puedo obtener el path real de un projecto
web porque en el archivo de solución viene apuntando al directorio virtual
(http://localhost/WebApplication1.csproj) y lo que necesito sería
(C:\Proyectos\WebApplication1.csproj) ¿Qué clase debó utilizar para que
obtener el path físico a partil de una URL?

Respuesta Responder a este mensaje
#2 A.Poblacion
04/03/2006 - 16:49 | Informe spam
"Marino Posadas" wrote in message
news:
Prueba con MapPath.



No, eso no le va a servir a Tomás. El MapPath solo funciona si lo
ejecutas desde DENTRO de la aplicación web, pero el problema es que no sabe
DONDE está la aplicación web. El código que está ejecutando es un programa
externo, que no forma parte de la web.
Esta información se encuentra en la metabase de IIS. Se accede a ella
desde vbscript con una instrucción del tipo
GetObject("IIS://localhost/W3SVC/1"), y me imagino que desde código .Net se
podrá hacer algo parecido. Una vez que se tiene el objeto metabase, hay todo
un modelo de objetos que permite enumerar y manipular las webs alojadas en
iis. Busca "metabase" en MSDN.
Si tienes IIS6 (Windows 2003), también se puede acceder a su metabase por
medio de WMI.
Respuesta Responder a este mensaje
#3 Marino Posadas
05/03/2006 - 01:29 | Informe spam
Cierto, es que hay que leer más despacio...))

Para remediar el mal cuerpo que me ha quedado del despiste anterior, ahí van
un par de pistas que -a lo mejor- te son de ayuda: Una es que existe un
editor de la Metabase de IIS descargable desde la dirección:
http://support.microsoft.com/suppor...2/0/68.ASP

La otra, el enlace a un artículito que dice cómo leer de ella.
http://www.asp101.com/articles/thom...efault.asp

No debería de ser complicado hacer lo mismo desde WMI para lanzarlo desde
.NET

Saludos cordiales
Marino Posadas
MCSD, MCAD, MCT
MVP Visual C#
www.ElAveFenix.net


"A.Poblacion" escribió en
el mensaje news:%
"Marino Posadas" wrote in message
news:
Prueba con MapPath.



No, eso no le va a servir a Tomás. El MapPath solo funciona si lo
ejecutas desde DENTRO de la aplicación web, pero el problema es que no
sabe DONDE está la aplicación web. El código que está ejecutando es un
programa externo, que no forma parte de la web.
Esta información se encuentra en la metabase de IIS. Se accede a ella
desde vbscript con una instrucción del tipo
GetObject("IIS://localhost/W3SVC/1"), y me imagino que desde código .Net
se podrá hacer algo parecido. Una vez que se tiene el objeto metabase, hay
todo un modelo de objetos que permite enumerar y manipular las webs
alojadas en iis. Busca "metabase" en MSDN.
Si tienes IIS6 (Windows 2003), también se puede acceder a su metabase
por medio de WMI.



Respuesta Responder a este mensaje
#4 Tomás Capetillo
06/03/2006 - 18:18 | Informe spam
Gracias por la respuesta, ya lo logré hacer mediante;

public string obtenerPathFisico(string nombreServidor, string
nombreDirectorioVirtual){
string rutaFisica = string.Empty;
DirectoryEntry iisServer = null;
DirectoryEntry directorioVirtual = null;
try {
//string VirDirSchemaName = "IIsWebVirtualDir";
directorioVirtual = new DirectoryEntry("IIS://" + nombreServidor +
"/W3SVC/1/Root/" + nombreDirectorioVirtual);
try{
rutaFisica = directorioVirtual.Properties["path"][0].ToString();
}
catch{
iisServer = new DirectoryEntry("IIS://" + nombreServidor +
"/W3SVC/1/Root");
rutaFisica =
string.Concat(iisServer.Properties["path"][0].ToString(),"\\",nombreDirectorioVirtual);
}
return rutaFisica;
}
catch (Exception e){
throw new Exception("Error while retrieving virtual directories.",e);
}
}



Tomás Capetillo escribió:
¡Hola a todos!

Estoy haciendo una aplicación WindowsForm que lee un archivo de solución
(*.sln) y apartir de este leo los archivos de proyecto (*csproj ó
vbproj) y por ultimo leo las clases de los projectos y las escribo en un
documento de Word.

El problema que tengo es que no puedo obtener el path real de un
projecto web porque en el archivo de solución viene apuntando al
directorio virtual (http://localhost/WebApplication1.csproj) y lo que
necesito sería (C:\Proyectos\WebApplication1.csproj) ¿Qué clase debó
utilizar para que obtener el path físico a partil de una URL?

Respuesta Responder a este mensaje
#5 solusoft
07/03/2006 - 12:43 | Informe spam
Hola,

qué utilidad tiene DirectoryEntry ?

Saludos.

"Tomás Capetillo" escribió:

Gracias por la respuesta, ya lo logré hacer mediante;

public string obtenerPathFisico(string nombreServidor, string
nombreDirectorioVirtual){
string rutaFisica = string.Empty;
DirectoryEntry iisServer = null;
DirectoryEntry directorioVirtual = null;
try {
//string VirDirSchemaName = "IIsWebVirtualDir";
directorioVirtual = new DirectoryEntry("IIS://" + nombreServidor +
"/W3SVC/1/Root/" + nombreDirectorioVirtual);
try{
rutaFisica = directorioVirtual.Properties["path"][0].ToString();
}
catch{
iisServer = new DirectoryEntry("IIS://" + nombreServidor +
"/W3SVC/1/Root");
rutaFisica =
string.Concat(iisServer.Properties["path"][0].ToString(),"\\",nombreDirectorioVirtual);
}
return rutaFisica;
}
catch (Exception e){
throw new Exception("Error while retrieving virtual directories.",e);
}
}



Tomás Capetillo escribió:
> ¡Hola a todos!
>
> Estoy haciendo una aplicación WindowsForm que lee un archivo de solución
> (*.sln) y apartir de este leo los archivos de proyecto (*csproj ó
> vbproj) y por ultimo leo las clases de los projectos y las escribo en un
> documento de Word.
>
> El problema que tengo es que no puedo obtener el path real de un
> projecto web porque en el archivo de solución viene apuntando al
> directorio virtual (http://localhost/WebApplication1.csproj) y lo que
> necesito sería (C:\Proyectos\WebApplication1.csproj) ¿Qué clase debó
> utilizar para que obtener el path físico a partil de una URL?
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida