6

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

1.安装

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

安装自动创建了一个新的应用程序池“ASP.NET 1.1”。我用那个。

2.麻烦

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

标记包含“culture”属性的无效值。

我修复了那个,然后看到:

不允许子节点。

我不想继续玩这种打地鼠游戏。一定有什么问题。

3. 我确定这是 .NET 1.1 吗?

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

高级设置...

自动 AppPool .NET 1.1 Advanced

基本设置...

自动 AppPool .NET 1.1 Basic

这似乎不对。

虽然设置了 1.1,但它不是高级下拉选择器中的选项。

为什么在基本框中只是“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?
  • 为什么我会收到这些运行时错误?
4

3 回答 3

7

找出应用程序是否在 1.1 下运行的快速方法是敲出一个显示环境版本的快速脚本:

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

或者,如果您遇到黄屏死机,那么您会在页面底部看到版本号: 替代文字

我怀疑在添加新应用程序池或修改现有应用程序池时无法选择 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.4322managedRuntimeVersion是因为该值是从applicationHost.config. 版本 2.0 和 4.0 显示完整描述的原因是,可能存在一些 IIS 友好元数据,其中正在查找 1.1 不存在的资源字符串。

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

appcmd 添加 apppool /name:"NewPool" /managedRuntimeVersion:"v1.1"

这在您链接到的文章的底部进行了解释。

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

appcmd 设置 apppool /apppool.name:"SomeOtherPool" /managedRuntimeVersion:"v1.1"

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

替代文字

我希望我能解释为什么 ASP.NET 1.1 应用程序池会神奇地创建或者安装程序如何设法使用处理程序映射做正确的事情(不知何故所有正确preConditions的设置,所以安装程序已更新或 IIS 有一些一种寻找 1.1 正在安装和修复的触发器)。

更新:

我联系了本文作者比尔·斯台普斯:

如何在 Vista 和 Windows 2008 上使用 IIS7 安装 ASP.NET 1.1

我问他 1.1 安装程序或 IIS7 如何设法在处理程序映射、创建“ASP.NET 1.1”应用程序池等方面做正确的事情。这是他的回复:

“如果没记错的话,在 Vista/Windows 2008 中创建了一个应用程序兼容性 shim,它将检测 1.1 安装程序并执行应用程序池创建/处理程序映射。但是,在 Windows 7/Windows Server 2008 R2 中,.NET 框架 1.1 不是更长时间的支持,如果此代码被撤消,我不会感到惊讶,尽管我不确定。”

于是谜团解开了。

于 2010-12-22T23:59:37.913 回答
2

我在尝试安装旧的 .Net 1.1 时遇到了同样的问题。在 Win2k8/IIS7 上。最后,我发现将所有内容都升级到 .Net 2.0 更容易、更快捷。我建议你也这样做。

除非您的代码正在做任何奇特的事情,否则对于相当大的项目,移植过程可以在一天或更短的时间内完成。

于 2010-12-22T17:30:11.920 回答
1

Windows 2008 没有安装 .NET 1.1。您可以手动安装 .NET 1.1

于 2010-12-23T00:53:51.470 回答