0

这似乎是一个非常常见的用例,但我终其一生都找不到有关如何设置它的任何信息。

我有一个“管理”站点,我在其中上传图像,然后是我的正常网站(单独的项目),我需要在其中显示这些图像。两个项目都需要能够显示图像(所以我不能简单地将它们存储在网站的项目目录中,然后就这样结束了)。

在生产中,这是显而易见的。我只是在 IIS 中设置了一个虚拟目录,但是在 Visual Studio 中开发,对此没有直接支持。我在网上看到的东西告诉你确实进入 IIS Express 配置文件并手动添加虚拟目录,但这有两个大问题:1)我在一个多开发人员环境中,让每个开发人员都这样做手动一致的方式是行不通的,并且 2)在我的代码中没有自动方式来引用这个静态目录,所以这将需要大量的硬编码路径到图像引用,这是一个非常糟糕的主意。

我也知道,我可以在我的项目中创建链接,但我正在处理上传,而不是我在设计时知道的静态资源,因此在我的项目中手动为每个新上传创建链接(尤其是当这个仅用于开发中的测试)太疯狂了。

那么,仅出于 Visual Studio 开发的目的,在项目之间动态共享资源的最佳方式是什么?

值得一提的是,这些都是 ASP.NET MVC 4 项目,我在 Windows 7 机器上使用 Visual Studio 2012。

编辑我应该指定在上传图像时,该图像的相对路径存储在数据库表中。我想我真正的问题是将该部分路径解析为来自完全不同的项目的真正可访问的 URL。如果我在同一个项目中,我会简单地使用类似的东西Url.Content(Model.ImageUrl),但如果图像实际上不在同一个项目中,这显然不会解决。

4

1 回答 1

1

有人向我指出,我想太多了。

在生产中,文件当然会通过一些虚拟目录提供,但在开发中,从哪里提供文件并不重要。所以,我真正需要做的就是为静态 URL 前缀添加一个应用程序设置,以添加到相对图像 URL 的前面。

对于开发,它只是我的管理站点的 localhost + 端口。然后,在我发布的 web.config 转换中,我只需将其更改为生产 URL,即类似于“ http://static.mydomain.com ”的内容。在我的应用程序代码中,我只需查找此应用程序设置并将其添加到我的相对图像 URL 之前,我就可以了。

如果我在使用这种方法时遇到任何问题,一旦我有机会实际实施它,我会在这里用适当的解决方案记录它们。

于 2013-05-07T19:04:16.413 回答