我在 IIS 7 中有以下规则:
<rule name="Category" enabled="true">
<match url="^store/([0-9]+)/(.*)" />
<action type="Rewrite" url="store?cid={R:1}" appendQueryString="false" logRewrittenUrl="true" />
</rule>
这似乎工作正常,但是在我的 ASP.Net MVC 3 应用程序中,我有几个 @Url.Content("~/") 条目,它们解析为 /store/ 作为根而不是 /。典型的网址是http://mysite.com/store/99/coats-with-hoods http://mysite.com/store/99/coats-with-hoods例如。
编辑/更新:我仍然对这个问题很着急,所以我决定研究一下 Url.Content 代码库,我注意到它会检查 URL 是否已被重写(true),如果是的话,它会使相关的路径,这反过来又not给我绝对网址:
if (!PathHelpers._urlRewriterHelper.WasRequestRewritten(httpContext))
return contentPath;
string relativePath = PathHelpers.MakeRelative(httpContext.Request.Path, contentPath);
return PathHelpers.MakeAbsolute(httpContext.Request.RawUrl, relativePath);
有谁知道为什么会这样吗?我有点困惑为什么会发生这种情况以及如何在我的应用程序中解释它?
好吧,当我意识到我永远无法对 ASP.Net MVC 使用 IIS Rewrite 时,我决定改用 HttpContext.RewritePath,现在一切似乎都正常工作。
这是一个非常基本的问题,因为受影响的不仅仅是 Url.Content,还有控制器路由,我在这个特定页面上有一个表单也错误地指向 /store/ 而不是 /。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)