【问题标题】:.axd files generate a 404 error.axd 文件生成 404 错误
【发布时间】:2009-07-08 14:45:47
【问题描述】:

为什么我的所有 .axd 文件在我们的生产服务器上都会生成 404 错误?

【问题讨论】:

  • .aspx 文件有效吗?安装的是什么版本的 ASP.NET?

标签: asp.net iis


【解决方案1】:

如果您使用的是 IIS7,请确保将处理程序添加到 <system.webServer><handlers> 部分:

<add name="MyName" path="MyName.axd" verb="*" type="NameSpace.Class, Assembly" />

【讨论】:

    【解决方案2】:

    就我而言,我正在使用自动转换从 .NET 2.0 传输项目。 Converter 添加了&lt;system.webServer&gt; 部分以及&lt;system.web&gt; 中的所有处理程序和模块。但是,它为每个处理程序添加了以下属性:preCondition="integratedMode,runtimeVersionv2.0" 删除该属性后,404 停止并且处理程序开始工作。

    【讨论】:

    • 感谢您为我节省了未知但可能很重要的时间!
    【解决方案3】:

    您需要在 IIS 中为该扩展创建一个 MIME 类型:

    要为特定扩展定义 MIME 类型,请执行以下步骤:

    1. 打开 IIS Microsoft 管理控制台 (MMC),右键单击本地计算机名称,然后单击“属性”。
    2. 点击 HTTP 标头。
    3. 单击 MIME 类型。
    4. 点击新建。
    5. 在“扩展名”框中,键入所需的文件扩展名(例如,.axed)
    6. 在 MIME 类型框中,输入 application/octet-stream。
    7. 应用新设置。请注意,您必须重新启动万维网发布服务或等待工作进程回收以使更改生效。在此示例中,IIS 现在提供扩展名为 .axed 的文件。

    【讨论】:

    • 不,不是这样。我感觉服务器正在从 .axd 文件和 .asmx 文件中删除查询字符串参数,因为我的 web 服务也不起作用。是否有人知道会阻止这种情况发生的事情(不是扩展中缺少的动词,因为这会产生不同的错误)
    • 你运行的是什么版本的 IIS?
    • 我认为您可能有权限问题?你能在那个服务器上看到其他东西吗? .aspx?有什么事吗?
    • 你为什么说“不,不是那个”然后接受这个答案?
    • @januszstabik 可能遇到了 UrlScan 的问题。检查 C:\Windows\System32\inetsrv\urlscan\logs 处的日志 例如,在日志文件中,此 URL 因具有 --(2 个破折号)而被拒绝。 GET /WebResource.axd?d=blahblah--blahblah&amp;t=12345678900000000 Rejected disallowed+query+string+sequence query+string - -- 修改 C:\Windows\System32\inetsrv\urlscan\UrlScan.ini 以允许 URL [AlwaysAllowedUrls] /WebResource.axd
    【解决方案4】:

    Request Filtering 中确认您要么 * 将.axd 作为允许的扩展名,或者 * 在编辑请求过滤设置

    中勾选了Allow unlisted file name extensions

    使用以下 web.config 部分可以实现相同的效果:

    <system.webServer>
        <security>
            <requestFiltering>
                <fileExtensions>
                    <add fileExtension=".axd" allowed="true" />
                </fileExtensions>
            </requestFiltering>
        </security>
    </system.webServer>
    

    【讨论】:

    • 我想做相反的事情,所以这是完美的(显然,我只是用false 代替了true)。
    【解决方案5】:

    您可以检查以下内容:

    1. 在 IIS 管理控制台中检查 .axd 扩展名(默认的 HTTP 处理程序扩展名)是否允许。
    2. 还要检查“验证文件是否存在”复选框是否未选中。选择 axd 扩展后单击“编辑”按钮后会出现此屏幕。
    3. 检查 HTTP 处理程序是否在 web.config 中正确注册。它也应该在正确的配置部分,具体取决于 IIS 版本。对于 IIS6 和 IIS7 经典模式,它应该是 &lt;system.web&gt;&lt;httpHandlers&gt;。对于 IIS7 集成模式,它应该在 &lt;system.webServer&gt;&lt;handlers&gt; 中注册。

    【讨论】:

      【解决方案6】:

      前段时间我们的生产服务器上出现错误 500(不是 404,但谁知道)。没有脚本资源能够加载。

      问题在于我们的开发服务器和生产服务器之间的时间差。那是-7小时。 .NET 抛出异常,因为它试图使用具有嵌入式脚本资源的程序集的“未来时间”。

      逐日减少{website}/bin/ 文件夹(实际上是其中的程序集)的创建日期解决了这个问题。

      【讨论】:

      • 感谢您的建议。我想测试一下。您使用什么工具来更改时间戳?
      • 这确实是我们的问题,并且得到了 404。我使用了 Nirsoft 的文件日期转换器。
      【解决方案7】:

      你能否发出一个失败的“坏”请求,然后检查服务器的系统和应用程序事件日志?

      围绕 axd 有几个问题可能会导致 404 或 500(例如 Alex 提到的“未来时间”问题),但它们会在事件日志中留下足迹。

      查看并发布任何提及 axds 的日志条目。

      【讨论】:

        【解决方案8】:

        我在 system.webServer 部分的 modules.. 节点中添加了一个属性 runAllManagedModulesForAllRequests="true",404 停止并处理开始工作了。

        【讨论】:

          【解决方案9】:

          如果这对任何人都有帮助,我遇到了同样的问题,我们中很少有人花了 2 天时间。在 3 台服务器上,一切正常,并且还在开发中,但在这台服务器上 404 不停。解决方案,我将池从集成更改为经典并且有效

          【讨论】:

          • 这种可能性取决于应用程序。在我的情况下,我无法切换到经典,因为应用拒绝在经典模式下运行。
          猜你喜欢
          • 1970-01-01
          • 2021-05-14
          • 2014-06-12
          • 2020-05-18
          • 1970-01-01
          • 2021-08-02
          • 2010-10-23
          • 2010-11-30
          • 1970-01-01
          相关资源
          最近更新 更多