Asp.net 解析相对于应用程序根的图像uri
我正在使用Asp.NETMVC5。对于这个问题,假设我的应用程序是从Asp.net 解析相对于应用程序根的图像uri,asp.net,asp.net-mvc,razor,relative-path,Asp.net,Asp.net Mvc,Razor,Relative Path,我正在使用Asp.NETMVC5。对于这个问题,假设我的应用程序是从localhost:9000/app提供的 我在我的\u layout.cshtml中找到了这个: <img src="@Url.Content("~/Content/logo.png")" /> 当用户请求localhost:9000/app/foobar时,图像URI被正确解析为localhost:9000/app/Content/logo.png 但是当用户请求localhost:9000/app/fol
localhost:9000/app
提供的
我在我的\u layout.cshtml
中找到了这个:
<img src="@Url.Content("~/Content/logo.png")" />
当用户请求localhost:9000/app/foobar
时,图像URI被正确解析为localhost:9000/app/Content/logo.png
但是当用户请求localhost:9000/app/folder/bender\u时,图像URI解析为localhost:9000/app/folder/Content/logo.png
如何使映像URI始终相对于应用程序根解析,而不是相对于请求的路径解析
编辑:Server.MapPath(“~/Content/logo.png”)
也有同样的问题。它是相对于请求的路径而不是应用程序根进行解析的。结果表明,这是我在没有hashbang(#!)的情况下为友好的HTML5 URL编写的URL重写规则。重写引擎在应用程序上设置了一项:“IIS\u WASURLREWRITED”
,它关注此项并改变其行为。上面说:
要使用与Web Pages Razor V2中相同的行为来解析重写URL的平铺符号,请在每个网页或全局设置的应用程序\u BeginRequest in Global.asax中将IIS_WasUrlRewrited上下文设置为false,如下所示:
请注意,IIS_WASURLREWRITED上下文的更改不仅会影响HTML元素中的平铺符号,还会影响MVC助手方法中的平铺符号。例如,如果设置为false,则Url.Content和Html.ActionLink中的波浪符号将返回重写的Url
到目前为止,这段代码没有在我的应用程序中造成任何问题,并且已经解决了问题。这应该可以正常工作!您有任何自定义路由配置吗?没有,只有MVC项目附带的基本HomeController路由配置。原来是我的URL重写规则。
protected void Application_BeginRequest(object sender, EventArgs e)
{
Context.Items["IIS_WasUrlRewritten"] = false;
}