我有2个ASP.NET应用程序。我们说App1和App2。
从App1,当我调用Server.MapPath(“/ App2”)时,我得到了App2应用程序的物理路径。
当我在IIS中更改App2的路径并再次从App1调用Server.MapPath(“/ App2”)时,我得到了相同的结果。
我必须重新启动App1才能注意到然后更改。
如果不重新启动App1,我可以做些什么吗?
答案 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()
,但它可能没什么帮助。