如何在IIS7的子域内运行多个MVC应用程序?

你好,感谢您的期待。

背景

我目前正在包装一个开发合同,客户希望我将应用程序的构build推送到他们希望运行多个MVC应用程序的基于IIS 7的服务器上。

我从蝙蝠身上得到的一个问题是,这个服务器已经是他们大型networking上的一个子域。 所以,如果我在浏览器中inputSERVERNAME ,它会自动指向SERVERNAME.COMPANYNAME.COM

现在,如果我把我的应用程序放在默认的网站/根目录下,那就好了。 在这种情况下,像往常一样点击请求admin.html指向“SERVERNAME.COMPANYNAME.COM/admin.html”的链接。

但他们要我把应用程序放在这个服务器上的一个子域中,这样他们也可以在同一台服务器上运行其他应用程序。 所以我假设我需要MYAPP.SERVERNAME.COMPANYNAME.COM但我不知道如何做到这一点。

复杂的事情是,我的应用程序和他们希望安装的未来的所有都是基于MVC的,拦截和重写URL。 我假设,如果我可以成功地将我的应用程序放入一个子域开始,这照顾自己。

我曾经尝试过

  • 在自己的应用程序池中的服务器上创build一个新的站点
  • 将该站点的绑定设置为MYAPP.SERVERNAME.COMPANYNAME.COM
  • 将该站点的绑定设置为MYAPP
  • 将该站点的绑定设置为MYAPP.SERVERNAME
  • 将该站点的绑定设置为MYAPP.SERVERNAME.COM
  • 将该站点的绑定设置为MYAPP.COMPANYNAME.COM

没有任何工作。 我在这里错过简单的东西吗?

谢谢,

马特

首先,你是从本地服务器testing这些绑定? 如果是这样,两个问题:

  1. 出于testing目的,您需要将您的myapp别名放在本地主机文件(C:\ Windows \ System32 \ Drivers \ etc \ hosts)中。
  2. 您需要禁用回送保护,如果您使用的是DNS别名,将会阻止您从服务器上访问自己的服务。 我在这里有一个关于这个问题的描述(它经常绊倒SharePointpipe理员) 。 快速解决scheme(虽然它禁用Windows的一个小安全function)是从PowerShell(以pipe理员身份运行)提示符运行此: New-ItemProperty HKLM:\System\CurrentControlSet\Control\Lsa -Name "DisableLoopbackCheck" -value "1" -PropertyType dword -Force重启。

在那之后,我会总体地说,这和MVC无关,就像DNS一样。 您可以根据需要(如MVC或其他)在IIS中创build任意数量的网站,并且只要您将有关名称的networkingDNS服务器告诉IP匹配,以便人们可以find它们即可组成任何DNS名称。

听起来就像你习惯于把网站放在服务器上,然后使用networking上其他计算机的http://servername 。 我总是喜欢做的是永远不要使用Web应用程序的主机名。 我将在networkingpipe理员使用的任何DNS解决scheme(可能是Windows DNS Server)中指定“appname”作为“servername”的别名来创build“DNS别名”。 然后在网站绑定我把我想要的主机头。 这样做的好处是双重的,我可以把更多的一个Web应用程序放在一个服务器上,然后我可以在别的地方移动这个Web应用程序而不告诉用户(只需改变DNS别名指针)。

所以在你的情况下,我build议使用http://myapp (假设它仅限于内部使用),并在companyname.com的DNS区域中为myapp添加DNS别名(CNAMElogging)以指向servername。

如果你认为它可以通过互联网从防火墙访问,那么你会想要使用像http://myapp.companyname.com FQDN。 同样的步骤适用于DNS,您只需要将其也放在Internet DNS中。

我不会做networking服务器名称的子域,因为它只是使所有的应用程序绑定到该networking服务器(你不能移动他们没有痛苦的每个用户改变他们的联系和习惯)。 myapp.companyname.com或myapp.servername.companyname.com的工作量不会less或多,为什么不让myapp.companyname.com的每个人都更容易。 如果他们告诉你这是为了更容易地识别位置,那么这就是DNS别名是…只是ping myapp.companyname.com和DNS别名将导致ping告诉你REAL服务器的DNS名称。