IIS/ASP.NET应用程序和子应用程序:如何在不重定向的情况下使用两个主机名?

IIS/ASP.NET应用程序和子应用程序:如何在不重定向的情况下使用两个主机名?,.net,asp.net,iis,iis-6,.net,Asp.net,Iis,Iis 6,我们在服务器上的目录中有一个web应用程序 c:\inetpub\wwwroot\myapp 在myapp目录中,我们有一个名为mysubapp的子目录。mysubapp有自己的bin目录,并且需要myapp\bin目录中的DLL 因此,目录如下: c:\inetpub\wwwroot\myapp c:\inetpub\wwwroot\myapp\bin c:\inetpub\wwwroot\myapp\mysubapp c:\inetpub\wwwroot\myapp\mysubapp\b

我们在服务器上的目录中有一个web应用程序

 c:\inetpub\wwwroot\myapp
在myapp目录中,我们有一个名为mysubapp的子目录。mysubapp有自己的bin目录,并且需要myapp\bin目录中的DLL

因此,目录如下:

c:\inetpub\wwwroot\myapp
c:\inetpub\wwwroot\myapp\bin
c:\inetpub\wwwroot\myapp\mysubapp
c:\inetpub\wwwroot\myapp\mysubapp\bin
我们目前使用主机头设置IIS,以便myapp.mycompany.com指向c:\inetpub\wwwroot\myapp和http://mysubapp.mycompany.com 重定向到http://myapp.mycompany.com/mysubapp.

我们希望mysubapp.mycompany.com指向c:\inetpub\wwwroot\myapp\mysubapp,而不让URL显示http://myapp.mycompany.com/mysubapp.

我已尝试将主机头设置为指向c:\inetpub\wwwroot\myapp\mysubapp而不使用重定向,但当我们执行此操作时,会收到一个错误,表明无法找到某些DLL文件,未找到的DLL文件是c:\inetpub\wwwroot\myapp\bin中的文件。此错误是有意义的,因为应用程序无法在其应用程序目录之外找到DLL


有什么方法可以配置IIS来实现这一点吗?

尽管答案没有考虑到主机头,但建议的解决方法可能有用。

尽管答案没有考虑到主机头,但建议的解决方法可能有用。

您需要使用url重写


您需要使用url重写


不涉及url重写的解决方案如下:

在DNS中为myapp.mycompany.com和mysubapp.mycompany.com分配不同的IP地址,但它们应该映射到相同的主机,Robert在下面解释了如何映射,或者使用2个NIC。 在IIS中创建2个网站而不是虚拟目录。 将第一个映射到myapp.mycompany.com的IP地址,并指向c:\inetpub\wwwroot\myapp 将第二个映射到mysubapp.mycompany.com的IP地址,并指向c:\inetpub\wwwroot\myapp\mysubapp ??? 利润:
不涉及url重写的解决方案如下:

在DNS中为myapp.mycompany.com和mysubapp.mycompany.com分配不同的IP地址,但它们应该映射到相同的主机,Robert在下面解释了如何映射,或者使用2个NIC。 在IIS中创建2个网站而不是虚拟目录。 将第一个映射到myapp.mycompany.com的IP地址,并指向c:\inetpub\wwwroot\myapp 将第二个映射到mysubapp.mycompany.com的IP地址,并指向c:\inetpub\wwwroot\myapp\mysubapp ??? 利润:
正如DreamSonic所说,为每个应用程序使用不同的网站,每个应用程序都有不同的IP地址。要向服务器添加多个IP,请使用“网络属性”中“Internet协议tcp/IP”对话框上的“高级”按钮。在IIS中,将网站设置为响应指定的IP,而不是默认的[All Unassigned]。您不需要两个或更多NIC


除此之外,你还需要做一些URL重写,这可能是一件痛苦的事情,因为你应用程序中的所有链接都需要修复,否则你最终会在客户端的浏览器中找到不需要的URL。

正如DreamSonic所说,为每个应用程序使用不同的网站,每个应用程序都有不同的IP地址。要向服务器添加多个IP,请使用“网络属性”中“Internet协议tcp/IP”对话框上的“高级”按钮。在IIS中,将网站设置为响应指定的IP,而不是默认的[All Unassigned]。您不需要两个或更多NIC


除此之外,你还需要做一些URL重写,这可能是一件痛苦的事情,因为你应用程序中的所有链接都需要修复,否则你最终会在客户端浏览器中找到不需要的URL。

如果我正确理解你的问题,我能想象的唯一工作设置是采用您提到的主机头指向c:\inetpub\wwwroot\myapp\mysubapp的方法,而不使用重定向,并将主应用程序的DLL包含在子文件夹的bin目录中。

如果我正确理解您的问题,我能想象的唯一工作设置是采用您提到的主机头指向c:\inetpub\wwwroot\myapp\mysubapp的方法,而不使用重定向,并将主应用程序的DLL包含在子文件夹的bin目录中。

如果您想在不同的域名下提供/mysubapp,我不认为把它放在myapp下有什么意义


将应用程序设置为单独的web应用程序,并将DLL从myapp复制到mysubapp。由于它是Asp.Net,您甚至可以通过web.config文件执行一些程序集绑定魔术。

如果您想在不同的域名下提供/mysubapp,我不认为将其保留在myapp下有什么意义


将应用程序设置为单独的web应用程序,并将DLL从myapp复制到mysubapp。由于它是Asp.Net,您甚至可以通过web.config文件执行一些程序集绑定魔术。

myapp.mycompany.com\mysubapp是无效的url。你可能是指myapp.mycompany.com/mysubapp乔纳森:没错,我纠正了这个错误myapp.mycompany.com\mysubapp是一个无效的url。你可能是指myapp.myc
ompany.com/mysubappJonathan:你说得对,我纠正了这个错误。我不明白两个ip地址如何解决这个问题。我不明白两个ip地址如何解决这个问题。我不明白为什么两个ip地址甚至两个网卡。这并不能解决他的问题。网站允许处理/root请求,而不会带来额外的麻烦。这就是IIS的工作方式。您可以尝试通过url重写来绕过这种行为,但这很容易出错。2个IP地址将允许2个网站,因此它们将能够服务于2个域。不需要使用2个IP,IIS可以使用相同的IP处理不同的主机名。除了两个单独的IP地址之外,这与我所做的差不多,但因为mysubapp需要myapp中的DLL,这个配置会导致mysubapp出错。我不明白为什么会有两个IP地址,甚至两个网卡。这并不能解决他的问题。网站允许处理/root请求,而不会带来额外的麻烦。这就是IIS的工作方式。您可以尝试通过url重写来绕过这种行为,但这很容易出错。2个IP地址将允许2个网站,因此它们将能够服务于2个域。不需要使用2个IP,IIS可以使用相同的IP处理不同的主机名。除了两个单独的IP地址之外,这与我所做的差不多,但因为mysubapp需要myapp中的DLL,此配置将导致mysubapp出错。同意-在每个应用程序中具有多个DLL副本的一种可能解决方案是强烈命名通用DLL并将其安装在全局程序集缓存中。同意-在每个应用程序中具有多个DLL副本的一种可能解决方案是强烈命名通用DLL和将它们安装到全局程序集缓存中。它位于myapp下的原因是由于许可问题。这是一个ektron CMS网站,我们有一个网站的许可证,所以如果我们分到两个网站,就会破坏我们的许可协议。我知道一点。它在myapp下的原因是由于许可问题。这是一个ektron CMS网站,我们有一个网站的许可证,所以如果我们分到两个网站,就会破坏我们的许可协议。我知道一点。