为什么我的IIS虚拟目录使用http:// localhost而不是http:// computername?

时间:2009-05-22 14:50:43

标签: iis-6 virtual-directory

我被赋予了向现有​​IIS 6.0网站添加功能的任务。为此,我构建了一个ASP.NET MVC应用程序。它在部署为自己的站点时工作正常,但当我尝试将其部署为需要生存的实际站点上的虚拟目录时似乎不起作用。

服务器名称为CWEBSERVER,IP为192.168.1.11。从查看IIS管理器,这是站点结构:

(Default Website) (root)
  - PRODUCTION (vDir)
  - CONTENT (not a vDir)
  - DATAFOLDER (vDir, contains MVC app, just added by me, not working)

奇怪的是,当我从服务器上的浏览器输入以下URL时,它可以工作:

http://localhost/DATAFOLDER/account.aspx
http://127.0.0.1/DATAFOLDER/account.aspx
http://192.168.1.11/DATAFOLDER/account.aspx

以下网址(我需要工作的网址)不会:

http://CWEBSERVER/DATAFOLDER/account.aspx

我得到的错误是“无法找到资源。”

仔细观察后,我意识到http://CWEBSERVER的请求将转到PRODUCTION vDir,但是http://localhosthttp://192.168.1.11的来电将转到网站的根目录。我想这是原始网站设计师设置的东西。我不知道如何更改此设置,但我认为无论如何我都无法更改它,因为实际上有大量其他目录会受到影响。我想指出的另一件事是:转到http://CWEBSERVER/CONTENT即可访问CONTENT文件夹。这真的很奇怪,因为我认为http://CWEBSERVER指向了根,所以我不认为“/ CONTENT”实际上能够到达CONTENT文件夹。

现在我的问题是:如何通过http://CWEBSERVER/DATAFOLDER访问我的DATAFOLDER?我认为我应该将DATAFOLDER vDir 放在PRODUCTION vDir的中。我尝试过,使用localhost或IP,仍然可以通过以下方式访问:

http://localhost/PRODUCTION/DATAFOLDER/account.aspx
http://127.0.0.1/PRODUCTION/DATAFOLDER/account.aspx
http://192.168.1.11/PRODUCTION/DATAFOLDER/account.aspx

但是,当我使用CWEBSERVER时,它仍然会失败:

http://CWEBSERVER/DATAFOLDER/account.aspx

错误仍然是“无法找到资源”。任何人都可以对此有所了解吗?具体来说,我有这些问题:

  1. http://localhost如何转到根目录,http://CWEBSERVER转到PRODUCTION vDir?我在哪里可以更改此设置?
  2. 为什么“http://localhost/PRODUCTION/DATAFOLDER/account.aspx”工作但不是“http://CWEBSERVER/DATAFOLDER/account.aspx”?
  3. 这个问题的接受答案(奖励将被授予)将需要能够这样做才能访问http://CWEBSERVER/DATAFOLDER/account.aspx。谢谢!

6 个答案:

答案 0 :(得分:11)

您很可能只有IIS绑定到IP地址。转到IIS管理器,然后转到网站上的属性。然后,从“网站”选项卡转到属性。

为该主机标头值添加标识。

如有必要,您可以添加多个绑定。

<强>更新

我想我现在知道你想要什么。 从IIS管理器中,展开您的默认网站。然后右键单击Production虚拟目录并选择“Create Virtual Directory”。称这个新的DATAFOLDER。然后将其绑定到文件系统上的现有位置。

我真的认为你需要清理一下。我要做的第一件事就是决定如何真正访问所有内容。换句话说,当他们输入http://www.mysite.org/那应该是什么?如果是PRODUCTION目录,则创建一个新的网站并将其指向PRODUCTION目录,然后在其下创建您的DATAFOLDER虚拟应用。

答案 1 :(得分:5)

虽然我没有浏览整个答案列表,但我通过以下方式遇到了这个解决方案。我的网页链接正在使用localhost,但没有使用IP或计算机名称。它没有任何错误,特别是对于GREAT IE(****)。

为了解决这个问题,我在IE的TRUSTED SITES中添加了该网站。

可能有助于减少一些挫败感!

答案 2 :(得分:2)

我遇到了一个类似的问题,它通过为我的临时IIS服务器分配静态IP来解决。 (我分配了与动态分配的IP地址相同的IP地址,即192.168.56.101。)

愿这对某人有所帮助。

同时检查this是否有防火墙设置。

答案 3 :(得分:1)

按照Chris Lively的说法,为其他主机名添加更多绑定,或者为同一内容添加设置的新网站。 IIS通过查看主机头信息进行响应,如果您只有一个绑定到端口80的默认网站,它将无法处理所有可能的标头。

如果名称是公司内部的名称(如计算机名称或内部DNS条目),则可能会让默认绑定执行此任务。如果它在测试中不起作用,则为该情况添加绑定(CWEBSERVER或mysite.org)。如果您关心双向工作,请使用和不使用www进行测试。

在IIS中为同一内容添加多个“网站”没有多少缺点。例如,您可以

mysite.org指出/PRODUCTION/DATAFOLDER/index.html

marketingsite.com指出/PRODUCTION/DATAFOLDER/index.html

然后你可以做一些事情,比如拥有不同的SSL设置等等。在我的网络服务器上,除非出现问题(例如我设置了新的外部IP地址并且尚未修改绑定),否则没有任何内容会出现在默认网站上。

选择你的毒药,但基本上你只需在IIS中添加设置,直到它按照你想要的方式处理所有可能的地址。

答案 4 :(得分:1)

对我来说这是一个防火墙问题:

  1. 转到:控制面板 - &gt; Windows防火墙 - &gt;通过Windows防火墙允许程序或功能

  2. 滚动到列表底部,然后选择www服务(http)的复选框。

  3. 保存
  4. 现在我可以访问http://computername.domain名称

答案 5 :(得分:0)

将'192.168.1.11 cwebserver'添加到%Windir%/ system32 / drivers / etc / hosts