20

我在 Win Server 2k8 下的 IIS 7 上设置了一个新的 .net 2.0 网站,当浏览到一个页面时,它给了我一个 404.17 错误,声称该文件(在这种情况下为 default.aspx)似乎是一个脚本,但正在由静态文件处理程序处理。听起来 ASP.Net 的模块映射搞砸了,但它们在配置中看起来不错。有没有人有纠正这个错误的建议?

4

16 答案 16

27

有一次我在 IIS6 上遇到了这个问题,当时不知何故 ASP.NET ISAPI 的东西被破坏了。

跑步

%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i 

重新创建设置照顾它。

于 2008-09-17T20:38:57.867 回答
12

这个解决方案对我有用......(我有 aspnet_regiis.exe -我造成了一些损害)

http://forums.iis.net/t/1157725.aspx

1.找到您的应用程序池并右键单击
2.选择基本设置
3. 选择您当前的 .Net Framework 版本
4.重启应用程序池
于 2010-03-18T22:06:46.473 回答
6

对我来说,它通过执行以下操作来工作

安装 ASP.NET

cd %windir%\Microsoft.NET\Framework64/v4.0.30319
aspnet_regiis.exe -i
  • 下一步转到 IIS 管理器并单击服务器(根)节点。
  • 在功能视图中,IIS 部分,打开“ISAPI & CGI Restrictions”
  • 右键单击 ASP.NET 4 限制列并右键单击以允许

希望对你有帮助..

于 2012-12-12T03:30:47.860 回答
4

对我来说,我的问题是因为我的项目的 web.config 文件中的设置(以及解决方案,一旦我理解了问题)。

在我的 web.config 文件中,我们在system.webServer > handlers区域中有这两行:

<remove name="WebServiceHandlerFactory-ISAPI-2.0" />
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

请注意,替代处理程序具有属性“preCondition="integratedMode"”。因此,我不得不将我的 AppPool 更改为使用Integrated而不是Classic进行管道模式设置(这与上述解决方案告诉我的做法相反)。

于 2010-08-11T19:20:14.830 回答
4

始终首先在处理程序映射中尝试“恢复为父级”。

尝试在 IIS 7.5 中运行 ASP.NET 4.0 时,我得到了 404.17。我尝试了以上所有方法,最终手动设置了正确的处理程序映射,错误消失了。

然后,在另一个出现相同错误的网站上,我在 Handler Mappings 中尝试了“Revert to Parent”,它添加了 6 个 *.aspx 映射,一切正常。

显然,您必须正确配置父级(从安装或其他方式),但这绝对是每个人都应该采取的第一步,因为它非常简单。

于 2011-07-20T16:13:02.140 回答
3

对我来说,解决方案是从虚拟应用程序下的处理程序映射部分单击“从继承中恢复”。

于 2011-06-24T16:40:50.873 回答
1

到目前为止,这些解决方案都不适合我。

我找到了其他一些可能的解决方案(对我不起作用):

于 2010-08-10T23:41:04.323 回答
1

只有一种方法可以解决这个问题......

首先安装 Windows7 然后安装具有所有功能的 IIS 7

然后安装 Visual Studio 2008 / 2010

我在 Visual Studio 2008 和 2010 上工作,但我以前从未见过这个错误。

我也可以在我朋友的电脑上试试。我也解决了这个错误。

于 2010-09-06T06:35:45.210 回答
1

对我来说,这可以通过将 32 位应用程序设置为 true 来解决。

于 2012-05-30T02:48:29.390 回答
0

以上都不对我有用。我们的服务器是 64 位的,因此将应用程序设置为允许 32 位应用程序为我们工作:

  • 转到 Web 服务器\应用程序池
  • 右键单击您的网站使用的应用程序池。
  • 点击高级设置...
  • 将“启用 32 位应用程序”设置为 True。

我认为这是因为 Web 应用程序仅编译为 32 位。

于 2011-06-10T11:11:27.043 回答
0
%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -i

在使用 32 框架获得“尝试加载格式不正确的程序......”后为我工作

也许我会再节省你一秒钟的谷歌搜索时间

于 2011-07-26T15:43:48.607 回答
0

对我来说,行得通。安装机器配置部分、处理程序、程序集、模块、协议和许多其他东西以正常工作。

于 2012-07-31T09:09:18.470 回答
0

对我来说,服务器功能中没有检查 HTTP 激活。

于 2014-10-21T12:59:44.403 回答
0

我们需要在 IIS 开发功能下的 Windows 功能菜单中安装 ASP.NET 3.5 和 4.5、ISAPI 扩展、ISAPI 过滤器和服务器端包含。

或者,使用命令行 DISM:

Dism /online /enable-feature /featurename:NetFx3 /All /Source:WindowsInstallers\Win8\sxs /LimitAccess
Dism /online /enable-feature /featurename:NetFx4 /All /Source:WindowsInstallers\Win8\sxs /LimitAccess
Dism /online /enable-feature /featurename:IIS-ISAPIExtensions /All /Source:WindowsInstallers\Win8\sxs /LimitAccess
Dism /online /enable-feature /featurename:IIS-ISAPIFilter /All /Source:WindowsInstallers\Win8\sxs /LimitAccess
Dism /online /enable-feature /featurename:IIS-ServerSideIncludes /All /Source:WindowsInstallers\Win8\sxs /LimitAccess
于 2015-07-08T15:56:48.503 回答
0

WCF 服务下的 http 激活在打开/关闭 windows 功能时解决了该问题。

于 2016-12-17T05:58:36.563 回答
0

就我而言,以上答案都没有解决问题,原因是没有安装 CGI 模块

为了解决这个问题,我遵循了这些说明。

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/cgi

于 2017-10-09T14:02:34.303 回答