0

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

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

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

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

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

4

2 回答 2

2

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

您可以使用以下代码绕过它

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

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

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

于 2012-07-18T16:16:48.530 回答
0

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

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

于 2012-07-18T14:48:07.530 回答