ASP.net C#多个Web应用程序 - 一个文件上载目录

时间:2013-07-10 13:31:54

标签: c# asp.net-mvc file-upload

我不知道为什么这对我来说变得如此难以理解。我正在努力解决以下问题,非常感谢任何帮助。

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

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

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

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

  

/Uploads/filename.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));
}

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

我通常使用BLOB存储,这是非常便宜的AmazonMicrosoft(以及许多其他提供商)

这种方法更好,因为:

  • 在单台服务器计算机上发生硬件故障时,它可以降低数据丢失的风险
  • 自从CDN加载资产以来,您的网页加载速度更快
  • 您可以重复使用任何应用程序中的文件,因为它们都在云中

以下是开始使用azure的几个教程:

答案 2 :(得分:0)

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