一个IIS WebSite可以托管不同ASP.NET版本的多个Web应用程序吗?

时间:2012-03-27 21:21:56

标签: asp.net iis web-config

我在IIS中有一个网站,我希望在同一个IIS网站下托管版本2,3.5和4。这可能吗?

认为它就像修改web.config一样简单。到目前为止,我在根目录上创建了一个ASP.NET 3.5站点。然后我在下面创建了一个目录并部署了一个ASP.NET 2.0站点。到目前为止,当我查看3.5网站时,它看起来很好。但是,当我浏览目录的default.aspx时,我得到的是2.0站点:

描述:解析为此请求提供服务所需的资源时发生错误。请查看以下特定的解析错误详细信息并相应地修改源文件。

有什么想法吗?

感谢。

更新以显示完整错误(不确定是否有帮助)

enter image description here

5 个答案:

答案 0 :(得分:4)

每个Web应用程序都需要单独的IIS应用程序。巧合的是,单独的应用程序可以有单独的应用程序池,而后者又可以有单独的.NET框架版本。

但那不是你的问题

对于您的应用,您遇到的问题是.NET 2.0 Web应用程序和.NET 3.5 Web应用程序,它们使用相同版本的.NET(CLR 2.0)。您看到的问题是因为子应用程序未标记为单独的应用程序,因此运行时查找错误的位置以使程序集加载您的类型。

您的网站内容可能如下所示:

root (~/)
- bin
  * app.dll
- sub-app
  - bin
    * subapp.dll

当子应用程序运行时,它正在尝试加载类型Second.Namespa._Default,但是程序集路径是〜/ bin(root / bin),它不包含正确的程序集。如果您将子应用程序标记为IIS中自己的应用程序,您将得到:

root (~/)
- bin
  * app.dll
- sub-app (~/ again for anything below)
  - bin
    * subapp.dll

现在加载Second.Namespa._Default会查看〜/ bin(现在是子app / bin),找到正确的程序集并能够加载该类型。

答案 1 :(得分:4)

您可以在一个IIS上拥有一个网站托管的多个应用程序。执行以下操作:

1。)将网站添加到IIS

2.。)转到硬盘/ ftp服务器上的物理文件夹,并定义应用程序应存放在网站内的文件夹,例如:[] = folder()= file

=====> [根]

==========>(web.config中)

==========> [二进制]

==========> [站点]

==========> [图像]

==========> [申请1]

====================>(web.config)(清除并覆盖继承的设置)

====================> [二进制]

====================> [sites]

====================> [图片]

==========> [申请2]

====================>(web.config)(清除并覆盖继承的设置)

====================> [二进制]

====================> [sites]

====================> [图片]

3。)返回IIS管理器并选择"应用程序池"和"添加新的应用程序池"。称之为"申请1"。重复它并调用第二个"应用程序2"

4.。)选择左侧的网站,浏览刚刚创建的文件夹。右键单击文件夹"应用程序1"并选择"转换为应用程序"。对文件夹"应用程序2"执行相同的操作。每次执行此操作时,请从步骤3中选择应用程序池。)

5.)你准备好了。现在,当您将代码放入" bin" "应用程序1"的文件夹或"申请2"它被视为一种不同的和单独的应用。

6。)请注意,以上文件夹中的所有web.config属性"应用程序1或2"是继承的。您可以使用自己的web.config覆盖文件夹"应用程序1或2",使用"清除"标签或"删除"和"添加"标签。机会很高,你已经为你网站的根文件夹定义了web.config。此web.config将由您的应用程序继承。

答案 2 :(得分:1)

您可以发布有关错误的更多详细信息吗?...

是的......你可以做到......你可以在IIS的网站中创建一个“应用程序”......这个应用程序可以使用完全不同的应用程序池,可以针对不同的.NET framweork ...

答案 3 :(得分:1)

请务必为第二个站点/应用程序选择并配置单独的应用程序池。

答案 4 :(得分:1)

如果将站点分隔为应用程序池,则可以在一个IIS中托管所有.NET版本。在App Pool中,每个应用程序都由相同的.NET版本(在池上设置)

运行