项目场景:
通过IIS发布站点,在IIS里打开C#的asmx接口文件直接访问该接口。
问题描述:
HTTP 错误 404.3 - Not Found
由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
最可能的原因:
- 可能是缺少处理程序映射。默认情况下,静态文件处理程序将处理所有内容。
- 您要使用的功能可能尚未安装。
- 没有为网站或应用程序启用相应的 MIME 映射。(警告: 请不要为用户不应下载的 .ASPX 页或 .config 文件等内容创建 MIME 映射。)
- 如果未安装 ASP.NET。
可尝试的操作:
- 在 system.webServer/handlers 中:
- 确保映射了当前页所需的处理程序。
- 请特别注意前提(例如,runtimeVersion、pipelineMode、bitness)并将这些前提与应用程序池的设置进行比较。
- 请特别注意所需处理程序行中的书写错误。
- 请确认要使用的功能已经安装。
- 确认启用了 MIME 映射,或使用命令行工具 appcmd.exe 为网站添加 MIME 映射。
- 要设置 MIME 类型,请使用以下语法: %SystemRoot%\windows\system32\inetsrv\appcmd set config /section:staticContent /+[fileExtension='string',mimeType='string']
- 变量 fileExtension 字符串是文件扩展名,变量 mimeType 字符串是文件类型说明。
- 例如,要为扩展名为“.xyz”的文件添加 MIME 映射: appcmd set config /section:staticContent /+[fileExtension='.xyz',mimeType='text/plain']
- 安装 ASP.NET。
- 创建跟踪规则以跟踪此 HTTP 状态代码的失败的请求。有关为失败的请求创建跟踪规则的详细信息,请单击此处。
详细错误信息:
模块 | StaticFileModule |
---|---|
通知 | ExecuteRequestHandler |
处理程序 | StaticFile |
错误代码 | 0x80070032 |
请求的 URL | http://localhost:80/mysite/WebService1.asmx |
---|---|
物理路径 | F:\桌面\作业。。。。课程文件\接口开发:加载功能\bootstrapWebServerAPI\WebApplication1\WebService1.asmx |
登录方法 | 匿名 |
登录用户 | 匿名 |
详细信息:
当所请求 URL 的文件扩展名是针对未在服务器上配置的 MIME 类型时,便会发生此错误。您可以为动态脚本页、数据库或配置文件以外的文件的文件扩展名添加 MIME 类型。这些文件类型使用一个处理程序来处理。您不应允许直接下载动态脚本页、数据库或配置文件。
查看详细信息 »https://go.microsoft.com/fwlink/?LinkID=62293&IIS70Error=404,3,0x80070032,22000
原因分析:
其中在页面打印的详细错误信息中,看到了当前Asp的页面的处理程序是StaticFile 程序,这里很明显是不正常的。
我们都知道Asp页面是动态脚本页,它和Aspx文件一样是由专门的程序来处理的,而StaticFile程序是用来处理静态网页的程序,肯定解析不了Asp文件……
那么一定是我们没有指定Asp文件的处理程序才会出现这种情况。
在网站功能视图下双击处理程序映射,我们可以看到处理各种特定请求类型的响应资源,其中有Aspx的,还有默认的*文件的处理程序是StaticFile ,唯独没有找到处理Asp文件的程序。如图:
解决方案:
控制面板中打开程序,选择“程序和功能”中的“打开或关闭Windows功能”或使用CMD命令:OptionalFeatures,找到Internet信息服务—万维网服务—应用程序开发功能,勾选Asp文件夹和ISAPI扩展文件夹(最好也将最上面的.NET Framework里的功能也勾选上,这两个功能如果没安装,将会下载一会儿,不用急)。具体如图:
勾选过后再到程序映射中查看就能看到asp文件的处理程序了。再次打开相应的文件就能成功。
注:如果是使用C#编写的接口,注意将 该语句取消注释。否则不能直接通过地址打开相应的文件。
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
[System.Web.Script.Services.ScriptService]