我有 2 个 ASP.NET 应用程序。假设 App1 和 App2。
从 App1 中,当我调用 Server.MapPath("/App2") 时,我得到了 App2 应用程序的物理路径。
当我在 IIS 中更改 App2 的路径并再次从 App1 调用 Server.MapPath("/App2") 时,我得到了相同的结果。
我必须重新启动 App1 才能注意到它然后更改。
我可以在不重新启动 App1 的情况下做些什么吗?
调用Server.MapPath()
可能会被缓存以提高性能,尽管似乎没有文档暗示这一事实。
您可以使用以下代码绕过它
免责声明 - 这是一个巨大的黑客,但它确实有效
Server.MapPath("/App2/" + Guid.NewGuid()).Substring(0,Server.MapPath("/App2/" + Guid.NewGuid()).Length-36)
所以是的,您可以在不重新启动 App1 的情况下对此进行一些操作,但您可能不想这样做。
Server.MapPath()
依赖于 IIS 中声明的虚拟路径。可能有一个内部 IIS 缓存机制会延迟您的更改在不重新启动应用程序的情况下显示,但我认为没有任何方法可以在不重新启动的情况下更新 IIS 虚拟目录的更改。
可能会尝试HostingEnvironment.MapPath()
查看是否获得了正确的路径,但无论如何看到Server.MapPath()
最终调用HostingEnvironment.MapPath()
它可能没有太大帮助。