我的 MVC3 Web 应用程序并不总是部署为 IIS 中的站点,因此我需要检测它是否已部署为虚拟目录或应用程序以处理路径字符串。
例如,如果站点部署为 IIS 根目录下的网站,如果我写:
\ABC\test.txt
这很好,请求转到http://somehost/ABC/test.txt
但如果站点部署为 IIS 中现有站点下的虚拟目录或应用程序,例如:
http://somehost/mymvcapp/
那么,“\ABC\test.txt”的请求将不正确。
我知道写“~\App_Data\test.txt”可以解决问题,但是“~\”只能由服务器在当前的Web上下文中处理。有时我需要对其他层的文件进行一些处理,它们无法触及 web 上下文。
所以我需要检测应用程序是否已部署为虚拟目录。并找到文件的实际物理路径。有什么办法吗?