无法加载本地资源或虚拟路径错误

时间:2017-07-06 20:49:14

标签: c# asp.net-mvc-5

场合

我有两个应用程序,它们将图像/文档读取并保存到一个特定的文件夹中。例如,如果用户在一个程序中上传他们的图像,则程序B的用户应该查看甚至编辑该图像。

我做了什么

在我的一个应用程序中,我在路径字符串的设置中创建了一个设置。所以要保存图像路径,我打电话

 path = System.IO.Path.Combine(Properties.Settings.Default.imagePath, Fimage);

这很好用。 但是,我的问题是当我尝试在编辑视图中查看图像时。

控制器

 ViewBag.imagePath =   Properties.Settings.Default.imagePath;

视图

 <img src="@ViewBag.imagePath/@Url.Content(@Model.image)" alt="Image" style="height: 255px;  " />

问题

问题是在尝试查看图像时出现错误,Not allowed to load local resource:我可以完全访问该文件夹,当我尝试在错误消息中浏览到该文件时,会显示图片。我从其他问题中被告知使用server.MapPath,但是当我Server.MapPath(Properties.Settings.Default.imagePath);时,我得到了错误的物理路径,预期的虚拟路径。

此viewbag包含我的文件存储的整个文件夹,其中 EVERYONE 用户具有完全访问权限。所以我真的不确定为什么它会造成伤害。

P.S我不能说像"~/content/images"这样的东西,因为该文件的路径是完全不同的应用程序,我想我需要给它整个位置。

任何帮助将不胜感激。

感恩

1 个答案:

答案 0 :(得分:0)

看起来您的defaultImage变量包含物理路径,这可用于保存图像,因为API需要表单中的路径,例如c:\website\images\....但要查看,您需要VirtualPathhttp://mycoolsite/images/image.jpg形式的内容,这就是错误告诉您的内容。

你的控制器;因此,应该返回类似

的内容
ViewBag.imagePath = Properties.Settings.Default.imagePath.Replace(Request.ServerVariables["APPL_PHYSICAL_PATH"], String.Empty); 

为了获得相对路径。见另一个related question

编辑我刚看到你的“PS ......”

如果是这种情况,那么您需要将完整的URL传递给其他应用程序:(例如http://someothersite.com/images/image.jpg)。