在我的razor样式助手类中(位于App_Code文件夹中,我有这行代码:
<img src="../../Content/images/ajax_activity.gif" alt="loading"/>
这在Cassini中运行良好,但是当我将应用程序部署到IIS(虚拟目录)时,IIS无法找到路径。虚拟路径被忽略。 这也行不通:
<img src="@Href("~/Content/images/ajax_activity.gif")" alt="loading" />
答案 0 :(得分:27)
试试这个:
<img src="@Url.Content("~/Content/images/ajax_activity.gif")" alt="loading" />
答案 1 :(得分:7)
好的,解决了,虽然我不确定它为什么会起作用。在尝试以下所有组合后没有成功:
<img src="../Content/images/ajax_activity.gif" alt="loading"/>
<img src="/Content/images/ajax_activity.gif" alt="loading"/>
<img src="~/Content/images/ajax_activity.gif" alt="loading"/>
<img src="Content/images/ajax_activity.gif" alt="loading"/>
以下最终按预期工作
<img src="./Content/images/ajax_activity.gif" alt="loading"/>
它使用虚拟目录集正确返回了图像路径。有人能解释一下吗?
答案 2 :(得分:1)
您可以使用@Url.Content
方法将虚拟相对路径转换为绝对应用程序路径,如下所示:
<img src=@Url.Content("~/images/picture.png") alt="picture description">
它将转换为此HTML代码转发给客户端:
<img src="/appname/images/picture.png" alt="picture description">
更新: 另一方面,您可以将图像转换为base64,它也将正确显示:
<img src="data:image/png;base64,iVBORw0KG...SuQmCC" alt="picture description">
答案 3 :(得分:0)
在IIS中的虚拟目录中部署时,应用程序根目录可能与您在开发环境中的不同。
如果你的应用网址类似
http://localhost/MyWebApp/
ASP.NET将认为root是“localhost”,它应该是“MyWebApp”。
要解决此问题,您必须将虚拟目录转换为应用程序:在IIS管理器中,找到您的目录,右键单击它,然后“转换为应用程序”。
答案 4 :(得分:0)
我知道这是一篇旧文章,但是我需要的信息在这里。
对我来说,缺少的部分是“出版时”。因此,对于任何未来的寻求如何进行Web配置转换的开发人员,我遵循的过程是:
为每个项目配置(即部署)添加转换文件
添加特定于环境的元素(不要忘记xdt属性)
为您的本地开发修改Web.config。
项目发布后,将发生转换。