Tengo un proyecto web como:¿Por qué AppDomain.CurrentDomain.BaseDirectory no contiene "bin" en la aplicación asp.net?
namespace Web
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
lbResult.Text = PathTest.GetBasePath();
}
}
}
se define la forma PathTest.GetBasePath()
en otro proyecto como:
namespace TestProject
{
public class PathTest
{
public static string GetBasePath()
{
return AppDomain.CurrentDomain.BaseDirectory;
}
}
}
Por qué vale la pantalla ...\Web\
mientras que el conjunto TestProject se compila en bin
carpeta (en otras palabras debería mostrar ...\Web\bin
en mi pensamiento).
Ahora tengo un problema si he modificado el método en:
namespace TestProject
{
public class FileReader
{
private const string m_filePath = @"\File.config";
public static string Read()
{
FileStream fs = null;
fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory + m_filePath,FileMode.Open, FileAccess.Read);
StreamReader reader = new StreamReader(fs);
return reader.ReadToEnd();
}
}
}
El File.config
se crea en TestProject. Ahora AppDomain.CurrentDomain.BaseDirectory + m_filePath
returen ..\Web\File.config
(en realidad el archivo se copió en ..\Web\bin\File.config
), se lanzará una excepción.
Se podría decir que debería modificar m_filePath
a @"\bin\File.config"
. Sin embargo, si utilizo este método en una aplicación de consola en su sugerencia, AppDomain.CurrentDomain.BaseDirectory + m_filePath
devolverá ..\Console\bin\Debug\bin\File.config
(en realidad el archivo se copió en .\Console\bin\Debug\File.config
), se lanzará una excepción debido al excedente bin
.
En otras palabras, en la aplicación web, AppDomain.CurrentDomain.BaseDirectory
es una ruta diferente donde se copia el archivo (falta de /bin
), pero en la aplicación de la consola es la misma ruta.
¿Alguien me puede ayudar?
La base de una aplicación web es la raíz web donde se encuentran las páginas ASPX. La carpeta bin es solo una subcarpeta de la raíz. – Tejs
¡Uf! ¡Pensé que me había vuelto loco! Tuve el mismo problema ... – ECC