问题起源: IIS 7.0 默认不包含.NET v1.1,如何在IIS7中运行基于asp.net 1.1创建的程序?
系统环境: os版本:VISTA或windows 2008 x86/x64 系统状态: 全新,已安装IIS 7.0
操作步骤: 1.确认"IIS元数据库和IIS6配置兼容性(IIS 6.0 compatibility)"已经启用 方法:开始->控制面板->程序->打开或关闭Windows功能->如下图,打上勾 第一步:IIS元数据库及兼容配置


2.安装.NET Framework 1.1和.NET Framework 1.1 SP1 分别到微软官方站点下载以下程序并依次安装(一定要依次安装): 1).NET Framework 1.1 版可再发行组件包 http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3
2).NET Framework 1.1 版Service Pack 1 (.NET1.1累积修补程序) http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=a8f5654f-088e-40b2-bbdb-a83353618b38
3)ASP.NET Security Update for .NET Framework 1.1 SP1 (.NET1.1安全累积更新) http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&FamilyID=8ec6fb8a-29eb-49cf-9dbc-1a0dc2273ff9
3.允许ISAPI的ASP.NET1.1扩展 方法1: 以管理员模式打开命令行运行; 进入c:\Windows\Microsoft.net\Framework\v1.1.4322 运行 aspnet_regiis -ir -enable, 其中"ir"选项保证在IIS7中注册v1.1时不改变现有的脚本映射, "enable" 打开 ISAPI and CGI Restrictions 的 Allow; aspnet_regiis 同时在Application Pools下创建一个新的名为"ASP.NET 1.1"的App池, 并将配置为 Classic pipline, 如果是64位操作系统将Enable32BitAppOnWin64设为 true;
方法2: 打开IIS,在左边选择最上面的服务器,在右边的“功能”视图中,双击“ISAPI 和 CGI 限制”,然后按下图在IIS中设置:
第三步:允许ISAPI和CGI限制
 4.在V1.1的配置文件machine.config中增加IgnoreSection句柄 machine.config文件位于:C:\Windows\Microsoft.NET\Framework\v1.1.4322\config\machine.config 如果win系统不在C盘,请注意相应改变位置. 添加内容: <section name="system.webServer" type="System.Configuration.IgnoreSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 如下图增加,注意位置和文字内容: 第四步:添加运行句柄
 5.将.NET 1.1站点移到.NET1.1应用程序池 假设你已经给网站建立并命名为:Test, 可通过以管理员模式在命令行运行: appcmd set app "Test/" /applicationPool:"ASP.NET 1.1" 也可在IIS中Test编辑站点下点击"基本设置"->选择……,如下图:
第五步:选择网站应用程序池

6.至此,大功告成!运行如下:

常见问题1
IE中显示如下错误:
应用程序“TW_81”中的服务器错误
--------------------------------------------------------------------------------
HTTP Error 500.0 - Internal Server Error 描述: 此应用程序正在采用集成 .NET 模式的应用程序池中运行。这是在当前和未来版本的 IIS 上运行 ASP.NET 应用程序的首选模式。
在此模式下,应用程序不应在 <system.web>/<httpModules> 配置节中指定 ASP.NET 模块组件,而应使用 <system.webServer>/<modules> 配置节来加载 ASP.NET 模块组件。您有以下几种选择:
1) 迁移应用程序以使用集成 .NET 模式(首选)。 您可以通过在命令行窗口(必须以管理员身份运行该窗口)中使用以下命令来迁移包括 <httpModules> 配置节内容在内的应用程序配置:
%systemroot%\system32\inetsrv\APPCMD.EXE set app "TW_81/" /applicationPool:"Classic .NET AppPool"
迁移应用程序后,它将可以在经典 .NET 模式和集成 .NET 模式下运行,以及在下级平台上运行。 2) 将此应用程序移至采用经典 .NET 模式的应用程序池中。 您可以通过在命令行窗口(必须以管理员身份运行该窗口)中运行以下命令来将应用程序移至采用经典 .NET 模式的默认应用程序池中:
%systemroot%\system32\inetsrv\APPCMD.EXE set app "TW_81/" /applicationPool:"Classic .NET AppPool"
或者,您也可以使用系统上以经典 .NET 模式运行的其他任何应用程序池。您还可以使用 IIS 管理工具将此应用程序移至其他应用程序池。
最好使用选项 1 来迁移此应用程序,以利用集成 .NET 模式提供的诸多好处。 错误代码: 0x80070032
通知: BeginRequest
模块: ConfigurationValidationModule
请求的 URL: http://localhost:81/testlogin.aspx
物理路径: E:\ASPNET\Web\Test.aspx
登录用户: 尚未确定
登录方法: 尚未确定
处理程序: PageHandlerFactory-Integrated
最可能的原因:
IIS 收到了请求;但在处理请求过程中出现内部错误。此错误的根本原因取决于处理该请求的是哪一个模块以及出现此错误时工作进程中出现了何种情况。 IIS 无法访问网站或应用程序的 web.config 文件。如果 NTFS 权限设置不正确,便会出现这种情况。 IIS 无法处理网站或应用程序的配置。 已经过身份验证的用户没有使用此 DLL 的权限。 该请求将被映射到托管处理程序,但不会安装 .NET 可扩展功能。 可尝试的操作:
确保 web.config 文件的 NTFS 权限正确,并允许访问 Web 服务器的计算机帐户。 检查事件日志中是否记录了任何附加信息。 确认 DLL 的权限。 如果请求被映射到托管处理程序,则安装 .NET 可扩展功能。 创建跟踪规则以跟踪此 HTTP 状态代码的失败的请求。有关为失败的请求创建跟踪规则的详细信息,请单击此处。 更多信息... 此错误表明在处理请求时出现问题。Web 服务器收到了请求,但在处理过程中出现错误,导致 500 错误。
Microsoft 知识库文章:
294807
-------------------------------------------------------------------------------- 服务器版本信息: Internet 信息服务 7.0。
-------------------------------------------------------------------------------------------------------- 解决方案 如果遇到这个错误说明你的应用程序不能在.Net 2.0中运行,必须将其移到经典模式中或.Net1.1中, 请按照以上步骤5操作,选择时选择"ASP.NET 1.1"或者"Classic .NET AppPool".
常见错误2
在IE中显示如下错误信息:
应用程序“TW_81”中的服务器错误
--------------------------------------------------------------------------------
HTTP Error 404.2 - Not Found 描述: 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
错误代码: 0x800704ec
通知: ExecuteRequestHandler
模块: IsapiModule
请求的 URL: http://localhost:81/Testlogin.aspx
物理路径: E:\ASPNET\TWWeb\Testlogin.aspx
登录用户: 匿名
登录方法: 匿名
处理程序: ASPNET-ISAPI-1.1-PageHandlerFactory
最可能的原因:
找不到此请求的处理程序映射。可能要安装某个功能。 服务器上未启用请求的资源的 Web 服务扩展。 扩展的映射指向的位置不正确。 扩展在浏览器或 Web 服务器中拼写错误。 可尝试的操作:
请安装处理此请求的功能。例如,如果您收到 .ASPX 页的这一错误,则可能需要通过 IIS 安装程序来安装 ASP.NET。 确认服务器上启用了请求的 Web 服务扩展。 打开 IIS 管理器并定位到服务器级别。 在“功能”视图中,双击“ISAPI 和 CGI 限制”以确认 Web 服务扩展被设置为“允许”。 如果该扩展不在列表中,请在“操作”窗格中单击“添加”。 在“添加 ISAPI 和 CGI 限制”对话框中,在“ISAPI”或“CGI 路径”框中键入 .dll 或 .exe 文件的路径,或者单击“浏览”导航到相应文件的位置。 在“描述”框中,键入该限制的简要说明。 (可选)选中“允许执行扩展路径”以使限制可以自动运行。如果不选中此选项,则限制状态将为“不允许”,这是默认状态。您可以在以后选中此选项并单击“操作”窗格中的“允许”来允许该限制。 单击“确定”。 注意: 请在确认您的 Web 服务器需要此 Web 服务扩展或 CGI 之后再将其添加到列表中。 确认扩展的位置正确。 确认扩展的 URL 在浏览器和 Web 服务器中均拼写正确。 创建跟踪规则以跟踪此 HTTP 状态代码的失败的请求。有关为失败的请求创建跟踪规则的详细信息,请单击此处。 更多信息... 当必要的 Web 服务扩展未启用、扩展的位置或名称拼写错误或输入不正确时,便会出现此错误。
-------------------------------------------------------------------------------- 服务器版本信息: Internet 信息服务 7.0。 -------------------------------------------------------------------------------------------------------- 解决方案 如果遇到这个错误说明"ISAPI 和 CGI 限制"中未允许"ASP.NET1.1",可能是因为在第3步中因权限不够或其它因素未成功执行命令, 请按照以上步骤3操作,最好使用图形界面操作完成.
|