更改ASP.NET应用程序的目录后,Server.MapPath不刷新

时间:2012-07-18 13:40:19

标签: asp.net .net iis

我有2个ASP.NET应用程序。我们说App1和App2。

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

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

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

如果不重新启动App1,我可以做些什么吗?

2 个答案:

答案 0 :(得分:2)

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

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

免责声明 - 这是一次大规模破解,但它可以胜任

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

所以,是的,你可以在不重启App1的情况下做些什么,但你可能不想这样做。

答案 1 :(得分:0)

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

可能会尝试HostingEnvironment.MapPath()来查看是否获得了正确的路径,但看到Server.MapPath()最终会调用HostingEnvironment.MapPath(),但它可能没什么帮助。