Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 解析相对于应用程序根的图像uri_Asp.net_Asp.net Mvc_Razor_Relative Path - Fatal编程技术网

Asp.net 解析相对于应用程序根的图像uri

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

我正在使用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/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;
}