代码之家  ›  专栏  ›  技术社区  ›  Abel

如何在不使用httpcontext.current的情况下获取ASP.NET Web应用程序的物理位置?

  •  6
  • Abel  · 技术社区  · 15 年前

    我发现自己需要根据运行的ASP.NET Web应用程序的物理位置配置log4net文件。我们喜欢尽早启动记录器,所以 Application_Start 似乎是个合适的地方。在iis6中,这项工作很好,已经运行了很长时间,但现在我们转到iis7,这将不再有效:

    string absolutePath = HttpContext.Current.Request.PhysicalApplicationPath;
    

    因为httpContext.current在许多 global.asax (应用程序、会话)事件。这是一个老消息,我们都知道,它引起了现在声名狼藉的 Request is not available in this context error . 我们不想回到经典模式。

    现在,问题很简单:不用 HttpContext ,是否可以找到当前运行的Web应用程序实例的物理位置?

    2 回复  |  直到 15 年前
        1
  •  14
  •   Alek Davis    15 年前
        2
  •  0
  •   Abel    15 年前

    作为我自己问题的另一个答案,我想补充一下 Server.MapPath() 工作期间 Application_Start 事件也是如此。应用程序域路径将等于 Server.MapPath("~") 但是,它更容易映射相对路径,从而消除了连接的负担(mappath最初的含义)。