IIS 7上的.NET Framework 1.1

Zac*_*son 6 .net-1.1 iis-7 asp.net-1.1

我继承了一个.NET Framework 1.1网站,我必须在Windows Server 2008上使用IIS 7托管.我遇到了一些麻烦.

1.安装

我按照这些说明安装了.NET Framework 1.1 .

安装程序自动创建一个新的应用程序池"ASP.NET 1.1".我用它.

麻烦

当我启动网站时,我看到web.config运行时错误:

标记包含"culture"属性的无效值.

我解决了那个,然后看到:

不允许子节点.

我不想继续玩这个打鼹鼠的游戏.有些事情一定是错的.

我确定这是.NET 1.1吗?

我检查自动创建的应用程序池.我看到它是1.1.

高级设置...

自动AppPool .NET 1.1高级版

基本设置...

自动AppPool .NET 1.1 Basic

这似乎不对.

设置1.1时,它不是高级下拉选择器中的选项.

为什么在Basic框中它只是"v1.1"而不是".NET Framework v1.1.4322"?那会更加一致.

4.我无法创建其他.NET 1.1应用程序池

我无法为其他应用程序池选择.NET Framework 1.1.它不是下拉选择器中的一个选项.那是怎么回事?

应用程序池缺少.NET 1.1选项

现在怎么办?

  • 为什么v1.1不是所有AppPools的选项?
  • 如何验证我的应用程序实际上是否使用.NET Framework 1.1?
  • 为什么我会收到这些运行时错误?

Kev*_*Kev 7

一种快速查看应用程序是否在1.1下运行的方法是打开一个显示环境版本的快速脚本:

<%@ Page Language="C#" %>
<script runat="server">
    void Page_Load(Object sender, EventArgs e)
    {
        Response.Write(System.Environment.Version.ToString());       
    }
</script>
Run Code Online (Sandbox Code Playgroud)

或者,如果您获得黄色死亡屏幕,那么您将在页面底部看到版本号: 替代文字

我怀疑在添加新应用程序池或修改现有应用程序池时无法选择Framework v1.1的原因是1.1安装程序不知道如何向IIS添加一些关键元数据或配置信息.

.NET 2.0附带2008,而.NET 4.0是后来的产品,IIS7也是友好的,所以最有可能是更好的IIS集成.或者,v1.1没有一些必要的元数据,IIS7的InetMgr需要能够将其添加到各种列表中.

您可以在ASP.NET 1.1池基本设置对话框的下拉列表中看到v1.1 而不是其他池的原因是因为它已经设置了,因此只会包含在列表中.我在新创建的ASP.NET 1.1池上进行了实验和更改,并将其设置为2.0,保存,然后重新打开.结果是v1.1不再可见.

此外,它被称为v1.1而不是.NET Framework v1.1.4322的原因是因为该值是从managedRuntimeVersion应用程序池配置中的属性中获取的applicationHost.config.版本2.0和4.0显示完整描述的原因是,可能存在一些IIS友好元数据,其中查找的资源字符串不适用于1.1.

要在创建时将池设置为使用v1.1,您必须managedRuntimeVersion使用APPCMD.EXE以下方法手动设置属性:

appcmd add apppool /name:"NewPool"  /managedRuntimeVersion:"v1.1"

您在链接到的文章的底部对此进行了解释.

要将现有池更改为使用1.1,还必须使用命令行APPCMD.EXE工具:

appcmd set apppool /apppool.name:"SomeOtherPool" /managedRuntimeVersion:"v1.1"

有趣的是,您可以设置managedRuntimeVersion任何旧值:

替代文字

我希望我能解释为什么ASP.NET 1.1应用程序池可以神奇地创建或者安装程序如何使用处理程序映射来管理正确的操作(不知何故preConditions设置了所有正确的,所以安装程序已更新或IIS有一些寻找1.1安装和修复东西的触发器.

更新:

我联系了本文作者Bill Staples:

如何在Vista和Windows 2008上安装带有IIS7的ASP.NET 1.1

我问他1.1安装程序或IIS7如何管理处理程序映射,创建"ASP.NET 1.1"应用程序池等等.这是他的回答:

"如果内存服务,在Vista/Windows 2008中创建了一个应用程序兼容性填充程序,它将检测1.1安装程序并执行应用程序池创建/处理程序映射.但是,在Windows 7/Windows Server 2008 R2中,.NET框架1.1不是如果这个代码被拉了,我不会感到惊讶,但我不确定."

如此神秘的解决了.