IIS将域添加到网站URL

时间:2016-08-31 11:21:26

标签: asp.net-mvc iis asp.net-mvc-5 iis-7

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

在产品页面中,我有以下代码:

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

它托管在domainx或ipx上。现在,当我浏览网站并将鼠标悬停在网址上时,它显示我将访问www.domainx.com/www.domain.com。如果我使用IP它是相同的东西,而是它使用IP前缀url。

造成这种情况的原因和/或如何阻止/阻止它发生?

1 个答案:

答案 0 :(得分:2)

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

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

令人惊讶的是,当悬停在写为[IP address]/www.stackoverflow.com[domain name]/www.stackoverflow.com的锚链接上时,在索引页面上生成的网址。

但是,如果在不使用www前缀的情况下添加http://协议,则会使用绝对路径来更正SO URL。

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

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

或者如果您想创建站点根超级链接,请使用Html.ActionLink,如下所示:

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

或使用普通锚标记:

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

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

欢迎任何建议。