【发布时间】:2010-09-10 21:37:16
【问题描述】:
我们可以依赖 ASP.NET 代码隐藏中的当前工作目录吗?或者,换句话说,我们可以使用相对路径,并确保它们会起作用吗?
如果在网站的一个页面中,我将当前工作目录设置为特定的内容,下次加载网站上的另一个页面时它是否仍然相同?何时加载网站上的同一页面?
如果我在 Page_Load() 中将当前工作目录设置为特定的内容,我能否确定在调用 Page_PreRender() 时它仍然是相同的?或者同一网站上的另一个页面可以在我之间改变它吗?同一个应用程序池中不同网站上的页面可以改变我吗?不同应用程序池中不同网站的页面?
换句话说,在 IIS 中,当前工作目录的范围是什么?它是特定于页面的吗?它是特定于网站的吗?还是在应用程序池中的所有页面之间共享?
在页面、网站、应用程序池和服务器之间,隔离当前工作目录不同值的边界在哪里?
【问题讨论】:
-
为什么要利用 Web 服务器上的当前工作目录?我不明白这有什么意义。工作目录是启动 w3wp.exe 时使用的目录——这有什么关系?
-
从代码隐藏中,我们正在访问一个 .NET 程序集,该程序集是为在 Web 和桌面应用程序之间提供共享功能而编写的。用户可以通过桌面应用程序提交工作,或者用户可以通过网站提交工作。在任何一种情况下,作业的处理都由 .NET 程序集处理,并通过将文件写入通过相对路径访问的多个队列目录之一来完成。问题是我们是否需要重写程序集中的所有文件处理以使其与 IIS 可靠地工作。
-
你不需要重写任何东西。这些目录将相对于它们所在站点的根目录。
-
"如果在网站的一个页面中,我将当前工作目录设置为特定的内容" 你如何“设置”页面的当前目录?