修复: 您收到"HTTP 404 错误"错误消息,并且在映射到 Aspnet_asapi.dll 后,自定义 HTTP 处理程序不会再次运行。 *

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 834270
注意
这篇文章的 Microsoft.NET Framework 1.0 版本,请参见 829930.
症状
您可以配置 HTTP 处理程序来处理所有文件扩展名包含未映射。如果处理程序的配置这种方式,您访问的网站的虚拟目录中包含具有特定文件扩展名没有映射的应用程序,该处理程序可以编写响应或重定向浏览器根据需要。

但是,如果您访问 Web 站点包含具有特定文件扩展名没有映射的应用程序的虚拟目录中,您可能会收到"HTTP 404 错误"错误消息。
原因
如果您访问位于虚拟目录映射到该处理程序中不存在的子文件夹中的默认文件的 URL,则可能会出现此问题。

首次您的浏览器请求的 URL,该处理程序响应像预期的那样。如果您尝试访问同一个不存在的文件夹中的特定的.aspx 页面,您将收到"HTTP 404 错误"错误消息。这也是预期的行为。

但是,如果尝试请求处理程序响应的原始 URL,无论是否您重新加载该页面中,您收到"HTTP 404 错误"错误消息而不是响应该请求的处理程序接收第一次访问。Microsoft ASP.NET 被回收之前,不会再次运行该处理程序。
解决方案
重要:此软件更新包含两种类型的包: Microsoft Windows Installer (.msi) 包和一个可选组件管理器 (OCM) 包。如果使用 Microsoft Windows Server 2003,则必须指定您需要 Windows 服务器 2003年 (ocm) 进行更新,因为 Windows 服务器 2003年文件保护监视 Microsoft.NET Framework 1.1 文件。如果您使用不同于 Windows Server 2003 操作系统,您必须继续使用 Windows 安装程序程序包。

软件更新信息

现已可从 Microsoft,受支持的软件更新,但它仅用于纠正本文中描述的问题。只将它应用于正经历此特定问题的系统。此软件更新可能会接受进一步的测试。因此,如果这个问题没有对您造成严重的影响,Microsoft 建议您等待包含此软件更新的下一步的.NET Framework 1.1 service pack。

要立即解决此问题,请与 Microsoft 产品支持服务以获取软件更新。Microsoft 产品支持服务电话号码以及有关支持费用的信息的完整列表,请访问下面的 Microsoft 网站:注意在特殊情况下,如果 Microsoft 支持专业人员确定某个特定的更新能够解决您的问题,可能会取消可免收支持电话的费用。通常的支持费用将应用于其他支持问题和事项,不需要进行专门更新。

系统必备组件

不需要任何先决条件。

重新启动要求

您可能需要重新启动计算机,如果任何服务或使用本文"文件信息"一节中显示的文件的应用程序正在运行时应用此软件更新。

软件更新替代信息

此软件更新不替代任何其他软件更新。

文件信息

此软件更新的英文版具有的文件属性 (或更新) 在下表中列出。日期和为这些文件的时间以协调世界时 (UTC) 列出。当您查看文件信息时,它将转换为本地时间。要了解 UTC 与本地时间之间的时差,请使用控制面板中的日期和时间工具中的时区选项卡。
   Date         Time   Version       Size       File name   ---------------------------------------------------------------------------------------------   30-Jan-2004  04:16  1.1.4322.995    258,048  Aspnet_isapi.dll   30-Jan-2004  04:16  1.1.4322.995     20,480  Aspnet_regiis.exe   30-Jan-2004  04:16  1.1.4322.995     32,768  Aspnet_state.exe   30-Jan-2004  04:16  1.1.4322.995     32,768  Aspnet_wp.exe   16-May-2003  00:49                   33,522  Installpersistsqlstate.sql   16-May-2003  00:49                   34,150  Installsqlstate.sql   30-Jan-2004  04:06  1.1.4322.995     94,208  Perfcounter.dll   30-Jan-2004  04:11                    8,571  Smartnav.js   30-Jan-2004  17:14  1.1.4322.995  1,220,608  System.dll   30-Jan-2004  17:14  1.1.4322.995    241,664  System.messaging.dll   30-Jan-2004  17:15  1.1.4322.995    323,584  System.runtime.remoting.dll   30-Jan-2004  17:14  1.1.4322.995    131,072  System.runtime.serialization.formatters.soap.dll   30-Jan-2004  17:15  1.1.4322.995  1,257,472  System.web.dll   30-Jan-2004  17:14  1.1.4322.995    819,200  System.web.mobile.dll   30-Jan-2004  17:14  1.1.4322.995    569,344  System.web.services.dll   30-Jan-2004  17:14  1.1.4322.995  1,339,392  System.xml.dll   30-Jan-2004  04:11                   14,482  Webuivalidation.js
状态
Microsoft 已经确认这是本文的"适用于"一节中列出的 Microsoft 产品中的问题。
更多信息
有关用于描述 Microsoft 产品更新术语的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684 用来描述 Microsoft 软件更新的标准术语的说明

再现现象的步骤

  1. 创建一个 HTTP 处理程序。为此,创建使用出现在这一节结尾的源代码中名为 HandlerError.cs 的文件。

    有关如何创建 HTTP 处理程序的详细信息,请参阅本文的"参考"部分。
  2. 创建一个新的 C# 类库项目,然后再添加到此项目中的步骤 1 中创建的文件。
  3. 创建一个新 C# ASP.NET Web 窗体应用程序名为 test。

    注意: 您可以使此项目,您在第 2 步属于同一个解决方案中创建的项目。
  4. 添加到 Web.config 文件作为您在步骤 3 中创建的 Web 窗体应用程序的一部分创建的步骤 1 中创建的处理程序。若要执行此操作,请向 Web.config 文件添加以下代码:
    <?xml version="1.0" encoding="utf-8" ?>		<configuration>		     <system.web>		          <httpHandlers>		               <add verb="*" path="*" type="test.HandlerError,test" />		                    </httpHandlers>		.		.		.		<system.web>
  5. 使用 Microsoft Internet Information Services (IIS) 配置管理器中映射到 Aspnet_isapi.dll 文件的步骤 3 中创建的 Web 窗体应用程序的所有未知的文件扩展名。若要执行此操作,请按照下列步骤操作:
    1. 在命令提示符下,键入 inetmgr.exe然后按 enter 键以打开 IIS 配置管理器。
    2. 找到并单击您在步骤 3 中创建的应用程序。
    3. 用鼠标右键单击该应用程序,然后单击属性
    4. 属性对话框中,单击虚拟目录选项卡。
    5. 虚拟目录选项卡上,单击配置
    6. 配置对话框中,单击映射选项卡。
    7. 映射选项卡上,单击添加
    8. 可执行文件框中,键入 Aspnet_isapi.dll 文件的路径。例如,键入以下命令:
      C:\WINDOWS\Microsoft.NET\Framework\v1.0.3705\aspnet_isapi.dll
    9. 扩展名框中,键入以下命令,具体取决于您的操作系统:
      • 如果您的计算机运行 Windows XP 时,键入以下命令:
        .*
      • 如果您的计算机运行 Microsoft Windows 2000,键入以下命令:
        *
    10. 单击以清除检查文件存在复选框。
    11. 在所有打开的对话框中单击确定,直到返回到主 IIS 配置管理器窗口中,然后退出 IIS 配置管理器。
  6. 在浏览器中,打开默认不存在作为您在步骤 3 中创建的 Web 窗体应用程序的一部分创建的虚拟目录下的某个子文件夹中的文件。例如,在地址栏中键入以下内容,然后按 enter 键:
    http://localhost/test/folder
    从处理程序中收到以下消息:
    输入处理程序:
  7. 在浏览器中,打开下面的文件:
    http://localhost/test/folder/file.aspx
    您会收到"HTTP 404 错误"错误消息。
  8. 在浏览器中,以下文件重新打开,然后再重新加载该页面:
    http://localhost/test/folder
    您将收到的处理程序在步骤 6 中收到"HTTP 404 错误"错误消息而不是响应。

HandlerError.cs 的代码

	using System;	using System.Web;		namespace test	{		        public class HandlerError: IHttpHandler	        {			                bool IHttpHandler.IsReusable	                {	                        get {return false;}	                }		                public HandlerError()	                {	                        //	                        // TODO: Add constructor logic here.	                        //	                }			                void IHttpHandler.ProcessRequest(HttpContext context)	                {	                        context.Response.Write("Handler Entered:");	                }	        }	}
参考
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
307985 信息: ASP.NET HTTP 模块和 HTTP 处理程序概述
308001 如何: 通过使用 Visual C#.NET 创建一个 ASP.NET HTTP 处理程序
307997 如何: 通过使用 Visual Basic.NET 创建一个 ASP.NET HTTP 处理程序

警告:本文已自动翻译

属性

文章 ID:834270 - 上次审阅时间:09/27/2015 05:25:00 - 修订版本: 1.0

Microsoft .NET Framework 1.1, Microsoft ASP.NET 1.1, Microsoft Visual Studio .NET 2003 Professional Edition, Microsoft Visual Studio .NET 2003 Enterprise Developer, Microsoft Visual Studio .NET 2003 Enterprise Architect

  • kbqfe kbhotfixserver kbnetframe110presp1fix kbfix kbcode kbbug kbmt KB834270 KbMtzh
反馈