我们可以依赖ASP.NET代码隐藏中的当前工作目录吗?或者,换句话说,我们可以使用相对路径,并确保它们可以工作吗?
如果在网站的一个页面中,我将当前工作目录设置为特定的,那么下次加载网站上的另一个页面时它是否仍然相同?加载网站上的同一页面时?
如果我将当前工作目录设置为特定的,在Page_Load()中,我可以确定在调用Page_PreRender()时它仍然是相同的吗?或者同一网站上的另一个页面可以在我之间进行更改吗?同一个应用程序池中不同网站上的页面是否会改变它?在不同的应用程序池中的不同网站中的页面?
换句话说,IIS中当前工作目录的范围是什么?它是否特定于页面?它是否特定于网站?或者它是在应用程序池中的所有页面之间共享的?
在页面,网站,应用程序池和服务器之间的哪些边界隔离了当前工作目录的不同值?
解决方法
Environment.CurrentDirectory是围绕
GetCurrentDirectory和
SetCurrentDirectory winapi功能的简单包装器.实际上,尝试设置目录需要UnmanagedCode权限.每当某个功能阻止您的网站以部分信任方式运行时,您都应该谨慎依赖它.