IIS 将域添加到网站 url

IIS adds domain to website url

我有一个使用 IIS7 托管的 ASP .NET MVC 5 项目。

在产品页面中我有这个代码:

<a href="www.domain.com"> blabla </a>

它托管在 domainx 或 ipx 上。现在,当我浏览该站点并将鼠标悬停在 url 上时,它显示它正前往 www.domainx.com/www.domain.com。如果我使用 IP,它是同一回事,但它会在 url 前加上 IP 前缀。

是什么原因造成的and/or我怎样才能阻止它/防止它发生?

我在索引页 (Views/Home/Index.cshtml) 上使用 SO 作为锚点 hyperlink 在示例项目中重现了您的问题,将 http:// 协议更改为仅 www:

<a href="www.whosebug.com">Stack Overflow</a>

令人惊讶的是,当悬停在锚点 link 上时,索引页面上生成的 URL 写为 [IP address]/www.whosebug.com[domain name]/www.whosebug.com

然而,当 http:// 协议添加时没有使用 www 前缀,呈现的绝对路径更正 SO URL。

我得出的结论是,不要只使用 www 前缀,而是在绝对 URL 路径上指定 http 协议:

<a href="http://www.domain.com"> blabla </a>

或者如果你想创建你的网站根超级link使用Html.ActionLink像这样:

@Html.ActionLink("blabla", "Index", "Home")

或使用普通锚标签:

<a href="@Url.Action("Index", "Home")">blabla</a>

恕我直言,如果 URL 协议,Razor 视图引擎可能会将锚标记的 href 属性内的 URL 字符串视为站点根 IP/domain 下的控制器名称未指定,因此需要 HTTP 前缀来区分控制器名称和外部绝对路径 URL。

欢迎提出任何建议。