我继承了一个.NET Framework 1.1网站,我必须在Windows Server 2008上使用IIS 7托管。我遇到了一些麻烦。
我在these instructions之后安装了.NET Framework 1.1。
安装会自动创建一个新的应用程序池“ASP.NET 1.1”。我用它。
当我启动网站时,我看到了web.config运行时错误:
标记包含“culture”属性的无效值。
我修复了那个,然后看到:
不允许使用子节点。
我不想继续玩这种打鼹鼠的游戏。 肯定是错的。
我检查自动创建的应用程序池。我看到它是1.1。
高级设置...
基本设置......
这似乎不对。
设置1.1时,它不是高级下拉选择器中的选项。
为什么在Basic框中它只是“v1.1”而不是“.NET Framework v1.1.4322”?那会更加一致。
我无法为其他应用程序池选择.NET Framework 1.1。它不是下拉选择器中的一个选项。怎么了?
答案 0 :(得分: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.4322 的原因是因为该值是从{{app}中的managedRuntimeVersion
属性中选取的applicationHost.config
属性1}}。版本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:
How to install ASP.NET 1.1 with IIS7 on Vista and Windows 2008
我向他询问了1.1安装程序或IIS7如何管理处理程序映射,创建“ASP.NET 1.1”应用程序池等等。这是他的回复:
“如果内存服务,在Vista / Windows 2008中创建了一个应用程序兼容性填充程序,它将检测1.1安装程序并执行应用程序池创建/处理程序映射。 但是,在Windows 7 / Windows Server 2008 R2中,不再支持.NET framework 1.1,如果提取此代码,我不会感到惊讶,但我不确定。“
神秘的解决了。
答案 1 :(得分:2)
我在尝试安装旧的.Net 1.1时遇到了同样的问题。在Win2k8 / IIS7上。最后,我发现将所有内容都压缩到.Net 2.0更容易,更快捷。我建议你也这样做。
除非您的代码做任何异乎寻常的事情,否则移植过程可以在一天或更短的时间内完成,以适用于相当大的项目。
答案 2 :(得分:1)
Windows 2008没有安装.NET 1.1。你可以manually install .NET 1.1。