如何让IIS在指定的URL上建立网站?

时间:2017-05-30 12:48:44

标签: asp.net iis

使用IIS 7如何配置网站在特定网址上可用?

如果我创建一个包含index.html文件的目录,并使用该目录创建网站,则该网站的网址为“http://localhost”,如何在“http://localhost/Application1处提供该网址? ''而不是?

我花了一个小时在网上搜索寻找可以想象的最明显配置的解决方案。我见过两种可能的方法。

  1. 使用所需的url创建一个虚拟目录,该目录配置为寻址无用的物理目录,然后将applciation创建为该目录的子目录。试了一下,IIS只是抱怨无法找到位置。

  2. 安装某种网址重写模块,然后决定是否要花费下一个小时左右的时间来研究如何配置它或者只是自杀。

  3. 肯定有一个更直接的解决方案吗?

    更新

    我注意到其他一些没有任何意义的东西。如果我创建一个新网站inetpub / wwwroot2并在其下创建两个应用程序App1和App2,(每个目录包含一个简单的静态index.html)。在IIS管理器中,如果我尝试使用App1或App2创建虚拟目录并单击“测试设置”,则会出现一个授权错误,指出:

    “服务器配置为使用内置帐户的传递身份验证来访问指定的物理路径。但是,IIS管理器无法验证内置帐户是否具有访问权限。请确保应用程序池标识具有对物理路径的读访问权限。如果此服务器已加入域,并且应用程序池标识为NetworkService或LocalSystem,请验证\ $是否具有物理路径的读取权限。然后再次测试这些设置。“

    在网络上发生了更多的搜索后,我发现了一个解决方案,我将作为一个可能的答案发布。

3 个答案:

答案 0 :(得分:1)

即使你知道底层协议和系统是如何工作的,IIS通常也会让人感到困惑和沮丧。首先,您不能在特定路径上的互联网上拥有一个网站。主机名(和/或IP地址和端口)确定控制站点的服务器。路径只是站点内的一种方便的组织工具。鉴于此限制,IIS自然要求您创建一些侦听主机名(再次和/或IP地址和端口)级别的内容。 IIS将其称为“站点”。创建站点后,您可以在该站点中创建应用程序或虚拟目录。应用程序和虚拟目录之间的唯一区别是应用程序可以在自己的应用程序池中运行自己的代码。任何一个总是处理其父级的子路径(它是站点或另一个虚拟目录或应用程序)。这是因为IIS处理请求的方式。在使用IP地址,端口和主机名找到适当的请求应用程序后,它会将请求发送到应用程序。然后,应用程序查看请求中给出的路径的第一部分,并使用它来查找相应的应用程序或虚拟目录,然后对路径的下一部分执行相同的操作,直到它无法将下一个子路径部分与a匹配为止。配置的应用程序或虚拟目录如果找到的最后一项是虚拟目录,它只会在配置的物理路径上提供静态文件。如果它是一个应用程序,它会将控制权传递给应用程序的代码(如果有的话)。如果没有应用程序的代码,它会将应用程序视为只是一个虚拟目录。

当您设置自己的网站时,您可以使用预配置的“默认网站”,它可以侦听所有IP地址上的端口80,也可以使用您自己创建的网站。但是,请记住,如果您尝试创建两个侦听相同URL的项目,IIS很容易混淆,因此如果您创建自己的网站尝试侦听与默认网站相同的URL,则不会工作。您可能需要首先禁用(或删除)默认网站,方法是右键单击该站点并选择“管理网站/停止”。

应用程序池可以被视为崩溃保护边界。保护一个池中的应用程序免受其他池中的崩溃。默认情况下,为每个新站点创建一个应用程序池,其名称与站点相同(因此每个站点都受到其他站点的保护)。您可以在站点创建期间或之后覆盖默认应用程序池映射。

在进行故障排除或首次设置系统时,首先让网站正常工作(并确保您正在访问您认为正在点击的网站)通常是一个好主意,然后一次添加一个应用程序,让每个工作(没有搞乱网站)。如果你有任何级别的代码,首先在没有代码的情况下测试它,然后用代码测试它。如果静态文件成功但代码没有,则可能是应用程序池设置问题。首先从本地机器测试,然后从另一台机器(如果需要)测试。如果它在本地工作,而不是从另一台机器工作,则可能是防火墙或网络问题。

另请参阅:https://webmasters.stackexchange.com/questions/72488/does-iis-7-5-use-a-separate-appdomain-for-each-subdomain/72650#72650

答案 1 :(得分:1)

使用默认页面可以很好地解决此问题。

首先创建" Default.aspx"文件内容与此类似:

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <%
            //redirect to specific web application. You can also parse request and redirect to specific application...
            Response.Redirect(@"http://www.example.net/Application1");          
        %>
    </div>
    </form>
</body>
</html>

在IIS根目录上复制此文件(通常为&#34; C:\ inetpub \ wwwroot&#34;)并在默认网站上添加默认文档&#34; Default.aspx&#34;如果已经不存在了。

那么这是如何工作的? 当请求到达IIS根目录时,IIS将查找默认文档。在这种情况下,将是&#34; Default.aspx&#34;。然后,此页面将客户端重定向到您的目标应用程序。

当然,您可以在IIS根目录上使用与纯HTML文档相同的原则。

答案 2 :(得分:1)

我发现默认IIS配置的身份验证问题的解决方案无法访问您在此处创建的内容目录https://forums.iis.net/search?q=authors%3A%28Beaker007%29&s=postDate&d=desc

  
      
  1. 开始&gt;管理工具&gt; Internet信息服务(IIS)管理器
  2.   
  3. 服务器名称&gt;网站,然后右键单击“默认网站”&gt; “添加虚拟目录”并填写目录的名称和路径   分享
  4.   
  5. 虚拟目录出现在默认网站三下后,点击它并&gt;修改权限&gt;安全&gt;修改
  6.   
  7. 添加:至少需要“读取”和“列出文件夹内容”的本地IUSR,ANONYMOUS LOGON和NETWORK SERVICE
  8.   
  9. 切换到功能视图,在中央窗格中双击“目录浏览”,然后单击操作窗格下的“启用”   正确(确保新创建的虚拟目录是高位的)
  10.   
  11. 在功能视图中,双击身份验证&gt;在“身份验证”页面上,选择“匿名身份验证”。
  12.   
  13. 在“操作”窗格中,单击“编辑”以设置匿名用户将连接到该站点的安全主体。
  14.   
  15. 在“编辑匿名身份验证凭据”对话框中,选择以下选项之一:    - 特定用户,(IUSR)    - 应用程序池标识,如果您希望使用当前在属性页上指定的帐户运行IIS进程   应用程序池。默认情况下,这是网络服务帐户。   重要如果您使用网络服务帐户,则授予匿名   用户与该帐户关联的所有内部网络访问权限。
  16.   

使用此过程将虚拟目标添加到我的IIS网站树后,我能够将虚拟目录转换为没有问题的应用程序。