【问题标题】:How can I create an IIS ASP.NET MVC web site located at an address like domain/some/path?如何创建位于域/某些/路径等地址的 IIS ASP.NET MVC 网站?
【发布时间】:2013-03-22 16:17:10
【问题描述】:

根据问题,这是我想要实现的目标:

  • 在 IIS (7) 中创建一个单独的网站节点,以托管已部署的 ASP.NET 4 MVC(和 Web API)应用程序。我想要一个单独的网站节点,例如在默认网站节点下的 IIS 中创建应用程序。这是为了对应用程序 web.config 拥有完整的权限,并且如果将 Web.config 放在某个子文件夹中,则不会受到限制。

  • 假设我正在开发 IIS 服务器上进行部署。通常,网站节点将位于类似于some.IP.addr.ess/ 的某个 URL。我希望网站位于类似some.IP.addr.ess/some/path/ 的 URL 上。这是为了让 Web 应用程序在部署到子文件夹时也可以正常工作。这也是因为我想在同一台服务器上部署另一个 Web 应用程序,并可以从 some.IP.addr.ess/another/path/ 访问它。

为了澄清我混乱的要求 :) 我想要:

  1. 在服务器上运行的一个 IIS Web 服务器实例,具有一个 IP,可能还有一个域名。
  2. 在 IIS 实例中,有几个网站节点,每个应用程序一个。应用程序可以在 ASP.NET MVC/Web API 上运行。另一个应用程序可能正在 PHP 上运行。另一个可能是静态 HTML 页面。这里我说 application 是一个通用术语,不一定与 IIS 应用程序 相关。
  3. 如果服务器有一个 IP 地址,比如123.123.123.123,则每个应用程序都应该可以通过123.123.123.123/MvcApp1123.123.123.123/PhpApp2 等 URL 访问。

我在网上搜索过,但可能我没有使用正确的术语:我总是得到关于如何在默认节点或虚拟目录中创建应用程序等的文章。然后我发现 this ASP.NET forum post 似乎说我不能。 ** 谢谢大家

编辑 - 追问问题的根源,如下:
我想引用具有不同 URL 路径的不同应用程序,例如IPaddress/Mvc1、IPaddress/Php2 等。
所有这些都是开发服务器所需要的,然后是测试和登台,而不是生产。因此,首先不会很快需要一个域。
我可以在子文件夹、虚拟目录或应用程序中使用应用程序和 Web.config,只要这不会妨碍彼此正常工作。例如。一个 ASP.NET 应用程序,旁边是一个具有自己的路由的 ASP.NET MVC、一个 ASP.NET Web API 和一个 PHP。

【问题讨论】:

  • 你的问题比较混乱。您是否在问两个站点是否可以位于相同的 IP 地址,但使用两个不同的虚拟文件夹,但有两个不同的主机名,每个主机名在这些路径中解析为根??
  • 我同意@MystereMan。您必须澄清您是否要在一个文件夹结构中托管多个站点。如果您只想要文件夹结构,使用自定义路由很容易完成。
  • 感谢 cmets。我对问题进行了一些澄清,如果我还不清楚,请进一步询问。
  • @superjos - 你的理解是错误的。对身份验证模式或角色提供者或子应用程序中的任何类似内容没有限制。您可能需要考虑一些因素,但不是限制。
  • @superjos - 只有在文件夹未设置为应用程序时才会出现该错误。如果您希望文件夹拥有自己的应用程序域,则它必须是应用程序。

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


【解决方案1】:

我想我理解你的意思,但是,我认为你对事情有一些基本的误解。

首先,是的,您可以在服务器上拥有多个网站节点。这些节点都可以响应相同的 IP 地址,但是,这仅在使用 HTTP 1.1 主机名时才有效,这意味着您必须使用不同的域名(主机名)引用每个站点。因此,您有:

domain1.com/mvc1 domain2.com/php1

domain1.com 和 domain2.com 都解析为 123.123.123.123,但 IIS 将查看主机名字段并确定它需要访问的站点。

如果你输入 ip 地址,123.123.123.123 那么 IIS 不知道你指的是哪个站点,所以它使用默认网站。这是关键,如果没有主机名,则始终使用默认站点。

如果您希望使用 IP 地址,您唯一的选择是使用默认站点中的应用程序文件夹。至少使用普通的 IIS。

【讨论】:

  • 好的。我现在正在阅读此内容(在您回答问题之后)。是的,我没有得到关于需要不同域以让 IIS 解析网站节点的不相关(!)详细信息。
【解决方案2】:

自从我在 IIS 中闲逛以来已经有一段时间了,所以我有点生疏了,我不记得曾经遇到过你的场景。不过,这是我能想到的:

有关创建站点的 IIS 文档多次提到“唯一绑定”这一短语,但并未明确说明该唯一性的范围,但假设它意味着服务器范围是合乎逻辑的,因此如果您的两个站点需要绑定到相同的 URL,那么它似乎是不可能的。文档还声明绑定可以指定协议、端口和主机。请注意,没有提到路径;您似乎无法绑定到任何较低级别的东西。这表明可以将站点设置为绑定到www.somehost.com,但不能绑定到www.somehost.com/some/path/

话虽如此,您的问题有可能通过解决问题的根源而不是症状来解决。与其问“我如何在子路径下设置 IIS 站点,以便我可以在一个 URL 下部署两个应用程序?”,不如问“我如何在一个 URL 下设置两个应用程序并且不会遇到 Web 权限问题。配置?”

我知道一个事实,您可以很高兴地在一个 URL 的子路径下部署多个应用程序,因为这正是我们在工作中所做的 - 我们在 ASP.NET MVC 中有一个应用程序 www.ourURL.com/somepath,还有一个旧版 ASP .NET Classic 应用程序,地址为 www.ourURL.com/otherpath。这两个应用程序是单个 Visual Studio 解决方案下的独立项目,每个都有自己的 Web.config。

如果没有关于应用程序结构的更多信息和/或关于 Web.config 和子文件夹相关限制的确切问题的详细信息,我真的无法提供更多帮助;就像我说的,我们在工作中是这样部署的,我也没有遇到过问题。

【讨论】:

  • 我添加了一些关于问题“根源”的更多细节,试图更清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多