1

我不知道为什么这对我来说是一个很难掌握的概念。我正在努力解决以下问题,任何帮助将不胜感激。

我有两个运行 C# 的 ASP.net MVC 4 应用程序。它们是两个独立的应用程序,一个用于面向公众的站点,另一个用于我们的管理端。我们将两者分开的原因是因为它们是两个完全独立的设计和代码库,并且更易于管理。

这两个应用程序连接到一个 SQL Server 数据库实例。

我们在每个站点上都有一个文件上传功能,我正在尝试找出一种方法将文件上传存储在两个站点的一个公共目录中。

问题是当文件上传时,我们将图像位置存储在数据库中。

/上传/文件名.png

我们使用以下函数来做到这一点。

Server.MapPath("~" + TempImage.ThumbnailLocation.Replace("TempUploads/", "")));

如何将两个站点的文件保存到服务器上的同一目录中,以便在数据库中保持所有图像路径相同?

我需要能够从两个应用程序调用以下其他问题来删除图像。

if (System.IO.File.Exists(HttpContext.Current.Server.MapPath(Path)))
{
     System.IO.File.Delete(HttpContext.Current.Server.MapPath(Path));
}
4

3 回答 3

4

您可以在每个应用程序中创建一个虚拟目录。虚拟目录将指向单个物理路径。因此,您可以从两个站点的同一物理目录上传和删除文件。

于 2013-07-10T13:39:16.793 回答
1

我通常使用 BLOB 存储,无论是来自亚马逊还是微软(以及许多其他提供商)都非常便宜

这种方法更好,因为:

  • 如果您的单台服务器机器出现硬件故障,它可以降低数据丢失的风险
  • 由于资产是从 CDN 加载的,因此您的页面加载速度更快
  • 您可以重用来自任何应用程序的文件,因为它们都在云中

这里有几个教程可以开始使用 azure:

于 2013-07-10T14:00:19.860 回答
0

这样做的一种方法是使用虚拟目录- 在 IIS 中,两个站点都可以配置为具有“/Uploads/”虚拟目录,并且它们都可以映射到硬盘驱动器上的相同位置。

于 2013-07-10T13:39:54.487 回答