You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

文件名含重音/特殊字符时上传报URL不存在的问题排查与配置咨询

文件名含重音符号上传报错的原因及web.config解决方案

问题1:报错原因

  • 编码不匹配:HTTP请求中包含非ASCII重音字符(如ó)时,若客户端以UTF-8编码传递文件名,但服务器端默认用其他编码(比如ISO-8859-1)解码,会导致文件名被错误解析,服务器无法匹配到正确的上传处理路径,最终抛出404错误。
  • IIS请求筛选限制:IIS默认的请求筛选规则会拦截包含特殊非ASCII字符的请求,认为这类请求存在安全风险,直接返回"请求的URL不存在"。
  • ASP.NET路径解析缺陷:ASP.NET默认路径解析逻辑对非ASCII字符处理不完善,未正确转义或解码重音字符,导致请求的目标路径被错误识别。

问题2:web.config配置解决方案

可以通过修改web.config的相关节点解决,以下是关键配置项:

1. 统一请求响应编码

在<system.web>节点下添加全球化配置,强制使用UTF-8编码处理请求和响应:

<system.web>
  <globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8" />
</system.web>

2. 允许IIS处理非ASCII字符

在<system.webServer>节点下配置请求筛选,允许特殊字符并启用Unicode处理:

<system.webServer>
  <security>
    <requestFiltering allowDoubleEscaping="true">
      <fileExtensions allowUnlisted="true" />
      <requestLimits maxAllowedContentLength="104857600" /> <!-- 根据需求调整上传大小限制 -->
    </requestFiltering>
  </security>
  <httpProtocol>
    <customHeaders>
      <add name="Content-Type" value="text/html; charset=utf-8" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

注:allowDoubleEscaping="true"会允许转义后的特殊字符通过请求筛选,确保重音字符能被正确解析。

3. 调整请求验证规则(针对旧版ASP.NET)

如果是ASP.NET 4.0及以下版本,可在<system.web>中添加httpRuntime配置,降低请求验证的严格程度:

<system.web>
  <httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />
</system.web>

注意:requestPathInvalidCharacters设为空会移除所有默认非法字符限制,需结合实际安全需求调整,避免引入风险。


内容的提问来源于stack exchange,提问作者Guillermo Contreras Gomez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 01:45:30