【问题标题】:Server.MapPath not refreshing after changing the directory of an ASP.NET application更改 ASP.NET 应用程序的目录后,Server.MapPath 不刷新
【发布时间】:2012-07-19 15:47:14
【问题描述】:

我有 2 个 ASP.NET 应用程序。假设 App1 和 App2。

从 App1,当我调用 Server.MapPath("/App2") 时,我得到了 App2 应用程序的物理路径。

当我在 IIS 中更改 App2 的路径并从 App1 再次调用 Server.MapPath("/App2") 时,得到相同的结果。

我必须重新启动 App1 才能注意到然后更改。

我可以在不重新启动 App1 的情况下做些什么吗?

【问题讨论】:

    标签: asp.net .net iis


    【解决方案1】:

    Server.MapPath() 的调用可能会被缓存以提高性能,尽管似乎没有文档暗示这一事实。

    你可以用下面的代码绕过这个

    免责声明 - 这是一个大规模的黑客攻击,但它确实有效

    Server.MapPath("/App2/" + Guid.NewGuid()).Substring(0,Server.MapPath("/App2/" + Guid.NewGuid()).Length-36)

    所以是的,您可以在不重新启动 App1 的情况下对此进行一些操作,但您可能不想这样做。

    【讨论】:

      【解决方案2】:

      Server.MapPath() 依赖于 IIS 中声明的虚拟路径。可能有一个内部 IIS 缓存机制会延迟您的更改在不重新启动应用程序的情况下显示,但我认为没有任何方法可以在不重新启动的情况下更新 IIS 虚拟目录。

      可能尝试HostingEnvironment.MapPath() 来查看它是否获得正确的路径,但看到Server.MapPath() 最终调用HostingEnvironment.MapPath() 无论如何它可能没有太大帮助。

      【讨论】:

      • 已经尝试过 HostingEnvironment.MapPath() 并且它正在做的事情。
      • 好的,值得一试。在这种情况下,我认为没有任何方法可以在不重新启动的情况下对 IIS 虚拟目录进行更新。
      猜你喜欢
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 2021-05-28
      • 1970-01-01
      相关资源
      最近更新 更多