IIS7.5上的静态文件处理程序不提供该脚本


130

我刚刚尝试将我的第一个Web应用程序部署到Windows 7 Home Premium笔记本上的IIS。创建应用程序后,我必须更改为“经典应用程序池”,然后为框架4.0设置该池。现在我得到以下错误:

HTTP错误404.17-找不到请求的内容似乎是脚本,并且不会由静态文件处理程序提供。

请求的URL是 http:// localhost:80 / pvmms / default.aspx

恐怕广泛的Google搜寻没有产生足够清晰或明确的内容供我使用,因此我通常会向专家求助。

编辑: 我怀疑这是因为没有.aspx文件的框架4.0处理程序映射。但是,aspnet_regiis甚至给我的管理员用户以手指,并说我需要管理员权限才能运行它。

编辑#2: 我注册了所有框架(2和4,32和64),现在都可以使用。我是通过手动将脚本映射添加.aspx到aspnet_isapi和voila来找到的。我不明白为什么框架的安装不能做到这一点,除非我的记忆使我失败,并且我仅在安装VS之后启用了IIS。


或者做在web.config中按如下说明stackoverflow.com/questions/2061678/...
bizl

Answers:


120

也许现在为时已晚,但您经常需要跑步

aspnet_regiis.exe -i  

安装asp.net之后。也许我现在还是会这样做。


17
.NET Framework附带有两个IIS注册工具。一种用于标准系统,另一种用于64位系统。Windows文件夹内Microsoft.NET目录的Framework64目录中的64位系统工具;例如C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v2.0.50727将包含IIS注册工具。
马修·洛克

3
如果得到错误the command is not recognized as an internal or external command。在开发人员命令提示符中运行它。
rockXrock

1
我必须对Framework64文件夹中的2.0框架执行此操作。就像@matthew Lock所说的那样
encodingNightmares 2014年

还要注意,如果必须运行2.0和4.0,请首先运行2.0。
2014年

C:\ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727(对于x64上的v2.0)-将Framework64更改为Framework for x86,将v2。*更改为v​​4。*(对于v4)(浏览到父文件夹以获取确切名称)
JohnLBevan 2014年

63

除上述之外,如果您需要WCF支持,则可能需要运行以下命令:

c:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe -i

将v3.0替换为您当前的框架版本。


1
提醒

1
对于.Net 4,其位于父目录中。例如:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ServiceModelReg.exe -i
bytedev 2014年

57

尝试访问我编写的WCF服务时,我在IIS 8.5中遇到此错误。原来服务器没有打开WCF HTTP激活功能。选中复选框,然后单击向导iisreset,开始工作。

Windows功能面板


1
这适用于IIS 8.5和Windows 8.1。我需要启用ASHX,以获取问题(HTTP 404.17)
Sergio A.

谢谢!这对我有用。但是,由于我使用的是旧版Web服务,因此我必须为.NET 2.0启用它
Stefan Vasiljevic 2015年

这是旧文章,但您的解决方案节省了我的培根。我在一百万年内……在其他任何地方都找不到。谢谢。
乔·施马克

48

如果您使用的是iis 7.5。

只需转到IIS管理器,打开您的网站属性。

您将在此处看到“处理程序映射”部分,只需转到该部分并搜索“ staticFile”即可。

最有可能是列表中的最后一个文件。

然后右键单击它,然后选择“还原为父对象”。

第一次面对我已经浪费了很多时间,反正这将解决您的问题。


2
正如阿迪(Adi)回答的那样:该突击队仅执行以下所有操作:c:\ Windows \ Microsoft.NET \ Framework \ v3.0 \ Windows Communication Foundation \ ServiceModelReg.exe -i
JDC

谢谢@Kumar的提示!IIS>站点> acme.com>处理程序映射>还原为父级。就我而言,我对整个域都做了,而不仅仅是“ staticFile”。这对我有用,比运行可执行文件(aspnet_regiis.exe)更简单/更可取。为什么这个建议还没有冒出来呢?=)
吉米尼

很棒的提示...但是那topstopper到底来自哪里?我不记得曾经在IIS的早期版本中遇到过...!
Mike Gledhill

25

我在带有ASP.NET 4.5的Windows Server 2012上遇到了这个问题,您不能使用aspnet_regiis.exe,而只能通过“添加角色和功能向导”安装ASP.NET 4.5:

在此处输入图片说明

您可以在服务器管理器右上角的“管理”菜单中找到菜单项“添加角色和功能”


1
您可以在服务器管理器右上角的菜单“管理”中找到菜单项“添加角色和功能”
Alexander Trofimov,2015年

16

替代文字

我应该检查这个选项


1
这只是确定是否可以提供静态内容。我的问题是脚本请求被映射到静态内容。如果我将其关闭,IIS甚至不会尝试为该页面提供服务器,只是给了我空白。
ProfK 2010年

16

我通过启用解决了这个问题 WCF Services

Programs and Features > NET Framework 4.5 Services > WCF Services> HTTP Activation node

但是您必须承认,这个完整的IIS设置configure / guess / trial,并且看到/尝试这个/尝试花费了我们4到5天的时间来尝试找到一种解决方案,这是一个完全的笑话。

当然,“ IIS”是迄今为止迄今为止最大的自信技巧


1
您所要做的就是为IIS启用静态内容功能。这与WCF无关。
ProfK 2014年

1
@ProfK取决于您为什么会收到该错误,不同的原因会导致相同的错误-如果您在配置为使用WCF的SVC文件中遇到错误,则可以通过上面的方法来解决。
JohnLBevan

大声笑完全同意,移植了几个站点,只看到了5种不同类型的错误,但都没有实际的错误消息或非常隐秘的错误消息。示例“由于发生内部服务器错误而无法显示该页面”,意味着您添加了已经存在的静态内容mime类型。
mike nelson

15

我知道这是一个老问题,但是我刚刚在重建的Windows 8计算机上使用3.5应用程序解决了这个问题,但是之后我仍然得到了这个结果aspnet_regiis -iru,结果发现ASP.NET 3.5没有在Application Development Features中打勾(没有足够的声誉来发布图像)。


2
@bicbmx图片,将其上传到某个地方后,例如在imgur.com
superjos 2013年

12

默认情况下,为您的应用程序创建的应用程序池可能是版本2。因此,尽管您在列表中看到了.svc扩展名的处理程序,但该处理程序不起作用,将其视为静态文件。您需要打开应用程序池属性并将其切换到版本4。


8

再次注册asp.net。...将解决此问题。
在此处输入图片说明

转到Visual Studio命令提示符,
然后将asp.net注册为Windows \ microsoft.net \ Framework [.Net版本号] \ aspnet_regiis.exe -i


2
aspnet_regiis.exe -i响应“此版本的操作系统不支持此选项”。为什么IIS这么痛?
Paul McCarthy

5

我在要设置的Windows 8计算机上遇到了同样的问题。我在安装.NET Framework 4.5的vs2010之前安装了vs2012。我的应用程序池在4.0中运行。我确保使用aspnet_regiis -i将aspnet注册为4.0。那仍然没有解决问题。然后,我打开了Windows功能,并注意到4.5添加了一个名为“ .NET Framework 4.5高级服务”的集合。我启用了WCF服务节点及其子节点,然后svc端点正常运行。希望这对正在转向Windows 8的人们有所帮助。


Server 2012,IIS8也在这里,感谢您的指导,让我朝着正确的方向前进。对于那些感兴趣的人,我需要打开应用程序服务器角色以及Web服务器角色。我在这里找到了所需的信息:msdn.microsoft.com/en-us/library/hh167503(v=nav.70).aspx
John

3

当我遇到同一问题时,我偶然发现了这个问题。我的问题的根本原因是应用程序池配置错误。在需要将其设置为4.0时,无意中将其设置为2.0。以下链接的答案帮助我发现了此问题:http : //forums.iis.net/t/1160143.aspx


2

我有同样的问题。当我为IIS添加静态内容功能时,它工作正常。


2

我发现另一个可能的解决方案具有相同的错误消息。

尝试将.NET 4.0 Web应用程序设置到新的应用程序池时,我收到一个奇怪的错误,告诉我它正在尝试使用静态文件处理程序来处理我的aspx文件,这没有任何意义。

由于某种原因,在IIS管理器的服务器级别的“ ISAPI和CGI限制”区域中将.NET 4.0的ISAPI设置为禁用。只需将其设置为启用即可,但是IIS 7.5管理器是如此复杂且难以遵循,我花了很长时间才弄清楚这一点。

我猜想是因为它是4.0引擎无法处理的4.0应用程序,所以默认情况下使用的是静态文件处理程序。


2

对于其他人,请阅读以下内容:

如果您注册的.Net版本不是您网站附加的应用程序池的“基本设置”下选择的版本,则可能发生这种情况。例如,您的站点应用程序池选择了.Net v2.0,但是您注册了v4.0


2

对于Windows 10 / Framework 4.7,我必须通过以下方法打开HTTP激活:

  1. 控制面板>程序和功能>打开或关闭Windows功能
  2. 在.NET Framework 4.7高级服务下,展开WCF服务,选择以检查HTTP激活以及使用WCF时需要执行的其他操作
  3. 单击“确定”,让安装执行其操作,然后打开管理命令提示符并发出IISRESET命令

1

cmd->右键单击->以管理员身份运行

C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_regiis.exe -i


0

使用IIS管理器,我发现.aspx文件已映射到ISAPI 2.0(在“处理程序映射”下),即使以前已安装ASP.NET 4.5。编辑它们以指向(也)指向ISAPI 4.0 64位可执行文件可解决此问题。

在%windir%\ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll中找到了可执行文件


0

我在iis 7.5上收到了针对应用程序的消息,该应用程序将经典应用程序池分配给了.net 2.0。我需要转到Handler Mappings并添加两个脚本映射,除了名称外,两者都相同。一个名称是svc-ISAPI-2.0-64,另一个名称是svc-ISAPI-2.0。请求路径为.svc。可执行文件是%SystemRoot%\ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_isapi.dll。我重启了iis,一切都很高兴


0

我刚刚解决的最坏情况之一是-Web.config中的条目冲突。

在我的本地计算机上,我没有在IIS中注册.woff扩展名,因此我使用Web.config添加了它。但是在生产服务器上.woff已注册了mime类型。这导致应用程序级别冲突。

有趣的是没有为此记录错误。只是一个猜测工作(当然是第一次)。

因此,对我而言,解决方案是从web.config中删除和/或元素。


0

我遇到了同样的问题,我只是将网站上的目标框架版本更改为它在IIS中开发的版本。这解决了我的问题。希望这可以帮助...

谢谢


0

这可能是多种原因,在我的情况下是在Application pool-> advance setting-> Enable 32 bit application(应该为true)下设置为false。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.