Я не могу получить текущий физический путь в Application_Start с помощью
HttpContext.Current.Request.PhysicalApplicationPath
поскольку в это время объект Запрос отсутствует.
Как еще я могу получить физический путь?
Я не могу получить текущий физический путь в Application_Start с помощью
HttpContext.Current.Request.PhysicalApplicationPath
поскольку в это время объект Запрос отсутствует.
Как еще я могу получить физический путь?
protected void Application_Start(object sender, EventArgs e)
{
string path = Server.MapPath("/");
//or
string path2 = Server.MapPath("~");
//depends on your application needs
}
Вы также можете использовать
HttpRuntime.AppDomainAppVirtualPath
Используйте Server.MapPath("~")
Я создал веб-сайт с ASP.Net WebForms, где вы можете увидеть результат использования всех форм, упомянутых в предыдущих ответах с сайта в Azure.
http://wfserverpaths.azurewebsites.net/
Резюме:
Server.MapPath("/") => D:\home\site\wwwroot\
Server.MapPath("~") => D:\home\site\wwwroot\
HttpRuntime.AppDomainAppPath => D:\home\site\wwwroot\
HttpRuntime.AppDomainAppVirtualPath => /
AppDomain.CurrentDomain.BaseDirectory => D:\home\site\wwwroot\
HostingEnvironment.MapPath("/") => D:\home\site\wwwroot\
HostingEnvironment.MapPath("~") => D:\home\site\wwwroot\
Вы можете использовать этот код:
AppDomain.CurrentDomain.BaseDirectory
используйте ниже код
server.mappath()
в asp.net
application.startuppath
в приложении С# windows
Существует также статический HostingEnvironment.MapPath
System.AppDomain.CurrentDomain.BaseDirectory
Это даст вам текущую директорию вашего приложения. Это даже работает для веб-приложений. Впоследствии вы можете связаться с вашим файлом.
Тем не менее, есть небольшая разница между всеми этими параметрами, которые
Я узнал, что
Если вы делаете
string URL = Server.MapPath("~");
или
string URL = Server.MapPath("/");
или
string URL = HttpRuntime.AppDomainAppPath;
ваш URL-адрес отобразит ресурсы в вашей ссылке следующим образом:
"file:///d:/InetPUB/HOME/Index/bin/Resources/HandlerDoc.htm"
Но если вы хотите, чтобы ваш URL показывал только виртуальный путь, а не местоположение ресурсов, вы должны сделать
string URL = HttpRuntime.AppDomainAppVirtualPath;
тогда ваш URL-адрес отобразит виртуальный путь к вашим ресурсам, как показано ниже.
"http://HOME/Index/bin/Resources/HandlerDoc.htm"
Лучший выбор -
AppDomain.CurrentDomain.BaseDirectory
поскольку он находится в пространстве имен системы и не зависит от system.web
таким образом ваш код будет более переносимым