不使用httpcontext获取应用程序路径.(asp.net)

Tom*_*asi 49 asp.net iis http httpcontext

怎么做?

我不想用这个:

HttpContext.Current.Server.MapPath
Run Code Online (Sandbox Code Playgroud)

是否有一个类似的功能,我可以调用,而不需要httpcontext?

例如,如果一个线程做一些东西我不能使用httpcontext,但我仍然需要获取应用程序的路径.并且我不能将上下文作为参数传递或从共享var中读取它.

SLa*_*aks 72

使用该HttpRuntime.AppDomainAppPath属性.

  • 这是一个大多数人不需要使用的低级课程. (2认同)

Tom*_*bes 56

有几种选择:

HttpRuntime.AppDomainAppPath

    WebApplication     -> Web root folder
    UnitTest           -> ArgumentNullException
    ConsoleApplication -> ArgumentNullException
Run Code Online (Sandbox Code Playgroud)

AppDomain.CurrentDomain.BaseDirectory

    WebApplication     -> Web root folder
    UnitTest           -> ...\AppDir\bin\Debug
    ConsoleApplication -> ...\AppDir\bin\Debug
Run Code Online (Sandbox Code Playgroud)

HostingEnvironment.ApplicationPhysicalPath

    WebApplication     -> Web root folder
    UnitTest           -> null
    ConsoleApplication -> null
Run Code Online (Sandbox Code Playgroud)

我建议使用AppDomain.CurrentDomain.BaseDirectory,因为它可以在任何类型的项目中使用,并且可以设置它.

例如,您可以通过命令将UnitTest BaseDirectory设置为指向Web根文件夹AppDomain.CurrentDomain.BaseDirectory:

AppDomain.CurrentDomain.SetData("APPBASE", "path to your web root");
Run Code Online (Sandbox Code Playgroud)