ASP.NET 4应用程序中的scriptresource.axd出现404错误,但webresource运行正常

20
大家好,我有一个 .net 4 应用程序刚刚部署到生产环境。该应用程序可以正常加载,但是我的引用的 js 文件没有正确加载。使用 Fiddler 工具,我发现 ScriptResource.axd 调用返回了 404 错误。
更奇怪的是,页面还通过 WebResource.axd 进行调用,而该请求正常工作。
有什么想法可以检查吗?我们正在运行 IIS7,它是负载平衡的,但是在配置文件中有机器密钥。我为 scriptresource.axd 添加了一个 httpHandlers 部分,但仍然遇到相同的问题... 感到困惑...
更新 - 我们认为我们的 Web 服务器不知道 axd 文件是什么。是否有任何 .net 安装程序可以在 iis 中安装 axd 映射?
13个回答

11

看起来需要将处理程序添加到system.webserver中,根据这篇博客:http://geekswithblogs.net/lorint/archive/2007/03/28/110161.aspx

<system.webServer>
  <handlers>
    <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </handlers>
</system.webServer>

感谢@Uwe Keim提供的帮助


4

今天我也遇到了同样的问题,但是原因是一个重写规则将请求从/ScriptResource.axd重写为/some_application/ScriptResource.axd,这不是一个有效的目标。将规则更正为忽略带有.axd的url即可解决问题。


这也是我的问题源头。Web.config没问题,调试模式也没帮助,无数次重启...一直以来,错误都是由编写不良的重写规则引起的。谢谢David! - Emanuel

3
这对我有用:
将以下处理程序添加到您的web.config中:
<system.webServer>
<handlers>
<add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" preCondition="integratedMode" />

这是针对IIS 7.x的,我认为您绝对不需要preCondition="integratedMode"。 - Craig Gjerdingen
2
这是.NET 4.0版本的<add name="ScriptHandler" path="*.asmx" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />。 - Craig Gjerdingen

3

对我而言,所有的AXD文件都失败了。在尝试过互联网上的每个答案并都没有成功后,我花了整整一个星期:

我创建了空文件ScriptResource.axdWebResource.axd,问题得到解决。我很想知道真正的问题所在。


2

请检查服务器的时间是否早于网站发布的时间。


我无法感谢你足够地降低了我的血压,你延长了我的生命几天! - Red Taz

2
“404” 在某些情况下也可以表示“未启用”或“不允许”。我曾在服务器上遇到过这种情况,需要启用一些扩展程序。
另一种方法是使用 Process Monitor 来查看 IIS 进程是否正在搜索实际文件并且没有找到。

2
两种可能的解决方案来自http://blogs.msdn.com/b/carloc/archive/2008/12/04/webresource-axd-or-scriptresource-axd-not-working.aspx
  1. IIS压缩导致WebResource.axd请求失败。禁用IIS Web应用程序的压缩,然后重试。
  2. IIS根目录或特定应用程序的Web.config设置了ScriptMaps来验证*.axd或WebResource.axd是否为真实文件(它不是)。阅读链接获取修复步骤(至少适用于IIS6 :-))。

链接还提供了有关WebResource.axd的良好背景信息,即使它并没有直接解决您的问题。我的WebResource.axd 404问题不幸地发生在Fiddler正在运行时(!),但这是一个与发布的问题无关的问题。

享受!-Zephan


2
网络时光机:https://web.archive.org/web/20140801041513/http://blogs.msdn.com/b/carloc/archive/2008/12/04/webresource-axd-or-scriptresource-axd-not-working.aspx - Alex

1

在花费4个小时后,我发现了一个名为EnableCdn的新属性,它在asp.net 4.0中。如果将其设置为“true”,它会从Microsoft内容资源服务器加载资源。

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" 
        ScriptMode="Release" AsyncPostBackTimeout="600" EnablePageMethods="true" EnableCdn="true" />

1

对我来说问题出在服务器时间设置错误,日期设置成了2012年6月12日而不是2013年6月21日。更正日期后,问题迎刃而解 :)


1
我遇到了这个问题。上面的解决方案对我没有用,但是this page页面上的一条评论解决了我的问题:

如果您的web.config文件不在根文件夹中或该文件夹不是IIS中的应用程序,则会出现此问题。

我通过将web.config文件复制到网站的根文件夹中来解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接