2008-09-20 14 views

Respuesta

13

System.Web.Hosting.HostingEnvironment.MapPath es lo que estás buscando. Siempre que esté utilizando el Servidor o HttpContext.Proyectos actuales, verifique primero si el HostingEnvironment tiene lo que necesita.

+0

¿Qué sucede si está fuera de un proyecto web pero desea digamos, vaya a la carpeta de imágenes de su proyecto web para tomar una imagen o para leer, digamos un contenido de un archivo .htm que contenga sitios en su sitio web, pero ¿tiene un método de utilidad al que desea llamar para obtener ese archivo? – PositiveGuy

+0

Si se encuentra fuera del proyecto web, creo que necesitará su propio código personalizado para ubicar el proyecto web de todos modos. Una vez que tienes eso, puedes seguir ese camino sin ayuda especial como 'MapPath'. – bdukes

0

Dado que este proceso es realmente fuera de banda en relación con el sitio web, tal vez simplemente puede poner la ruta en un archivo de configuración.

Puede que no sea la mejor idea, pero es una alternativa.

0

¿qué dice esto.GetType(). Assembly.Location?

+1

Devuelve c: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Archivos temporales ASP.NET \ mywebsite \ 50f1a686 \ ab5b581d \ App_Code.xkcsxvg6.dll – John

0

¿Puede usted mirar la Asamblea & los caminos base de código como este:

Imports System.Reflection 
Imports System.IO 
... 
Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase) 

Ese tipo de cosas no siempre funciona, así que lo que recomendaría hacer es escribir un registro con un montón de datos sobre la asamblea, para ver qué funciona en esta ubicación. Es lo que tuve que hacer para obtener algo similar cuando estaba creando un componente COM para alojar en AppCenter. Utilicé esto para "obtener" lo que debería ser "APP_BASE", y configurar eso para que el archivo app.config se cargue correctamente.

Log.Write (Assembly.GetExecutingAssembly().CodeBase) 
Log.Write (Assembly.GetExecutingAssembly().Location) 
Log.Write (Path.GetFullPath(".")) 
Log.Write (Application.StartupPath) 
... and so on, whatever you can think of ... 
1

Hay muchas maneras de hacerlo, yo personalmente lo soluciono almacenando información de ruta como una opción de configuración para mis módulos, no es elegante, pero funciona y funciona todo el tiempo.

Joe Brinkman Creo que en algún lugar tiene una publicación de blog sobre cómo construir un nuevo HTTPContext para usar dentro del planificador.

+0

Para lectores futuros, los artículos de Joe Brinkman son [aquí, para la versión original] (http://www.dnnsoftware.com/community-blog/cid/135304/the-quest-for-the-dotnetnuke-holy-grail) y [aquí para obtener una versión actualizada] (http://www.dnnsoftware.com/community-blog/cid/137009/new-and-improved-holy-grail). – AaronSieb

Cuestiones relacionadas