HTTP 错误 414.0 - URL 太长。但是 URL 很短

HTTP Error 414.0 - URL Too Long. But URL is short

我有一个 JS 文件,其中 returns HTTP 错误 414.0 - URL 太长。

URL 不是特别长 - http://beta.abcdefg.abc.ab/abcdef/abcdefgh.js

我怀疑物理路径可能太长了,但只有 91 个字符 - \abcdefsitestorage.file.core.windows.net\iisfarm\Websites\asp\asp-apps\abcdef\abcdefgh.js

(示例与真实 URL 的长度和结构相同)

我已经尝试了 web.config 中的设置,但它们没有任何区别

<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" maxRequestLength="2147483647" executionTimeout="1200" maxQueryStringLength="2097151" maxUrlLength ="65536" relaxedUrlToFileSystemMapping="true"/>

<security>
        <requestFiltering>
          <requestLimits maxUrl ="65536" maxAllowedContentLength="4294967295" maxQueryString ="2097151" />
        </requestFiltering>
      </security>

我现在 运行 没有想法,所以如果有人能指出我正确的方向,那就太好了!

编辑:

已确认问题出在 IIS 上。服务器响应 header 是服务器:Microsoft-IIS/10.0

当前正在尝试获取 FRT 运行ning,目前未记录任何内容。

<system.webServer>
  <tracing>
    <traceFailedRequests>
      <add path="*">
        <traceAreas>
          <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
          <add provider="WWW Server" areas="Rewrite,Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module" verbosity="Verbose" />
        </traceAreas>
        <failureDefinitions statusCodes="100-900" />
      </add>
    </traceFailedRequests>
  </tracing>
</system.webServer>

编辑 2:

我一直在做一些更多的测试,在这个特定的位置,对于 .js、.css 和 .txt 文件,它会出现 414 错误,但对于 .aspx 文件,它不会出错。

non-aspx 个文件是否设置了限制?

编辑 3:

即使目标文件不存在,它也会给出 414 错误!

这个错误实际上是从 http.sys 中抛出的,而不是从 IIS 中抛出的。在请求传递到 request-handling 管道中的 IIS 之前抛出错误。

要让 https.sys 接受更长的请求 URL 而不会抛出 HTTP 414 错误,请在服务器 PC 的 Windows 注册表中,在 Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters,创建一个 DWORD-type 名称为 MaxFieldLength 且值足够大的值,例如65535.

更多信息可以参考这个link:https://whosebug.com/a/34638320/13336642.

我已经解决了。

414 错误完全是转移注意力。

这是虚拟目录的权限问题。它使用的是通过身份验证,这似乎适用于 .aspx 页面但不适用于任何其他文件类型。

我现在指定了一个特定的用户来连接,一切正常。