Zac*_*son 6 .net-1.1 iis-7 asp.net-1.1
我继承了一个.NET Framework 1.1网站,我必须在Windows Server 2008上使用IIS 7托管.我遇到了一些麻烦.
我按照这些说明安装了.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.它不是下拉选择器中的一个选项.那是怎么回事?

一种快速查看应用程序是否在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:
我问他1.1安装程序或IIS7如何管理处理程序映射,创建"ASP.NET 1.1"应用程序池等等.这是他的回答:
"如果内存服务,在Vista/Windows 2008中创建了一个应用程序兼容性填充程序,它将检测1.1安装程序并执行应用程序池创建/处理程序映射.但是,在Windows 7/Windows Server 2008 R2中,.NET框架1.1不是如果这个代码被拉了,我不会感到惊讶,但我不确定."
如此神秘的解决了.
| 归档时间: |
|
| 查看次数: |
12984 次 |
| 最近记录: |