【发布时间】:2012-06-28 12:22:58
【问题描述】:
我在同一个解决方案中有两个 Web 应用程序项目(项目 A 和项目 B)。
我希望能够:通过项目A,在项目B目录的某处保存一个文件。
每当我使用 Server.MapPath 等时,它都会解析为项目 A 的虚拟目录,而不是 B 的虚拟目录。
根据我的阅读,我相信我应该可以将项目 B 的 URL 直接输入到 save 方法中。但是,目前这两个项目都没有部署。此外,我想利用他们在同一个解决方案上的事实。
TIA!
【问题讨论】:
我在同一个解决方案中有两个 Web 应用程序项目(项目 A 和项目 B)。
我希望能够:通过项目A,在项目B目录的某处保存一个文件。
每当我使用 Server.MapPath 等时,它都会解析为项目 A 的虚拟目录,而不是 B 的虚拟目录。
根据我的阅读,我相信我应该可以将项目 B 的 URL 直接输入到 save 方法中。但是,目前这两个项目都没有部署。此外,我想利用他们在同一个解决方案上的事实。
TIA!
【问题讨论】:
但如果您要保存文件,那么您不想访问虚拟目录;您想要实际(物理)目录。这意味着 Request.MapPath 是要走的路;您可以使用将 cross-app mapping 设置为 true 的重载。
string pathToAppB = Request.MapPath("/AppBVirtualPath", Request.ApplicationPath, true);
不过,您仍然需要知道应用程序 B 将部署到哪个虚拟路径;除非您部署到本地 IIS,否则您无法在本地进行测试。
【讨论】:
您可以将项目 A 和项目 B 的虚拟目录配置到磁盘上的同一目录。当您使用 Server.MapPath 从项目 A 保存文件时,它将被保存到该文件夹。然后当项目 B 尝试通过 url 访问文件时。虚拟目录将访问同一目录。
为 web 项目配置虚拟目录:
在视觉工作室:见this post。
在 IIS 中:请参阅 this tutorial。
【讨论】: