2012-07-18 65 views
0

我有2个ASP.NET应用程序。比方说App1和App2。更改ASP.NET应用程序的目录后,Server.MapPath不刷新

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

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

我必须重新启动App1才能注意到这一点。

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

回答

2

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

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

免责声明 - 这是一个庞大的黑客,但它的工作

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

所以,是的,有什么你可以做这不需要重新启动App1,但你可能不想这样做。

0

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

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

+0

已经尝试HostingEnvironment.MapPath(),它正在做的事情。 – Jason 2012-07-18 15:20:07

+0

好的,值得一试。在这种情况下,我认为没有任何方法可以在没有重新启动的情况下更改IIS虚拟目录进行更新。 – gws2 2012-07-18 15:33:57

相关问题