我在 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/ 作为根而不是 /。例如,典型的 url 是http://mysite.com/store/99/coats-with-hoods。
编辑/更新:我仍然在这个问题上大发雷霆,所以我决定研究 Url.Content 代码库,我注意到它会检查 URL 是否已被重写(真),如果是这样的话相关的路径,这反过来又没有给我绝对的 URL:
if (!PathHelpers._urlRewriterHelper.WasRequestRewritten(httpContext))
return contentPath;
string relativePath = PathHelpers.MakeRelative(httpContext.Request.Path, contentPath);
return PathHelpers.MakeAbsolute(httpContext.Request.RawUrl, relativePath);
有谁知道为什么会这样?我对为什么会发生这种情况以及如何在我的应用程序中解释它有点困惑?