如何从asp.net中的两个项目访问同一组图像

如何从asp.net中的两个项目访问同一组图像,asp.net,image,azure,Asp.net,Image,Azure,VS 2013、SQL Server 2012、实体框架、Web API 2 两个项目都访问相同的数据库 最初,我的解决方案只有一个项目。此项目将读取和写入图像。所以我将图像路径保存在数据库中,并将图像本身保存在该项目的文件夹“~/Images/”中 后来,我在这个解决方案中添加了另一个项目。这个项目还需要读写同一组图像。当我试图通过首先从数据库获取图像路径然后访问它来读取第一个项目保存的图像(比如“~/Images/xyz.jpg”)时,我被告知该文件不存在。然后我意识到我在连接第一个项目的域

VS 2013、SQL Server 2012、实体框架、Web API 2

两个项目都访问相同的数据库

最初,我的解决方案只有一个项目。此项目将读取和写入图像。所以我将图像路径保存在数据库中,并将图像本身保存在该项目的文件夹“~/Images/”中

后来,我在这个解决方案中添加了另一个项目。这个项目还需要读写同一组图像。当我试图通过首先从数据库获取图像路径然后访问它来读取第一个项目保存的图像(比如“~/Images/xyz.jpg”)时,我被告知该文件不存在。然后我意识到我在连接第一个项目的域名和路径“~/Images/xyz.jpg”。但实际上“~/Images/xyz.jpg”是项目1中的一条路径。所以很明显这是不存在的,我甚至在第二个项目中没有“~/Images”文件夹

我将把这两个项目部署到Azure。所以我不打算配置IIS


我怎样才能解决这个问题?谢谢。

我建议使用绝对路径获取图像。您可以为映像路径引入一个配置参数(将其放在您的in-web.config中),例如c:\myprojectname\images。然后仅将图像文件名保存到数据库中。当您检索回图像文件名时,将其与配置中的绝对路径连接起来,您将能够访问它


一件事。如果应用程序启动时不存在文件夹,请确保检查并创建该文件夹。

可能使用blob存储?什么是blob?我倾向于不使用这种新概念,因为我现在没有时间学习……您也可以将图像本身存储在数据库中。这是如果您有时间学习如何:)正如我所知,在数据库中保存图像最常用的方法是在数据库中保存路径,但将图像本身保存在文件中。我并没有对此进行研究,但这似乎表明,与在数据库中保存路径相比,在数据库中存储图像本身有一些缺点?谢谢您的建议。问题是我会将这两个项目部署到Azure,这意味着我不知道它们将我的文件保存在哪里。这不像你部署到自己的服务器,你可以配置你的IIS。我理解这一点。但Azure角色基本上是一个Windows服务器虚拟机,您可以使用文件系统(但不是最佳实践)。如果您不想进入azure Blob,则需要使用文件系统。无论您决定使用绝对路径还是相对路径-在这两种情况下,您都可能会遇到权限问题。谢谢。我想知道当我部署这两个项目时,我如何知道Azure将它们部署到同一个虚拟机?您可以配置Azure服务定义以使两个应用保持在相同的Web角色上。检查并确认。但是您将无法水平扩展您的Web角色(创建多个实例)。我强烈建议您了解azure Blob。非常感谢。blob如何将图像本身保存在db中?你有什么建议?Azure blob订阅具有额外成本。