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

Windows 10 IIS Express下ASP.Net Web应用触发PathTooLongException问题咨询

ASP.NET Web应用解决System.IO.PathTooLongException异常方案

问题根因:ASP.NET Web应用的运行宿主为IIS/IIS Express进程,项目自身的app.manifest配置不会作用于宿主进程,所以之前的配置不生效。

前置校验

首先确认系统层面长路径支持已正确开启:

  • 注册表路径HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem下,LongPathsEnabled的DWORD值设置为1
  • 组策略中「计算机配置>管理模板>系统>文件系统>启用Win32长路径」设置为「已启用」
  • 修改完成后重启操作系统生效

本地IIS Express调试场景解决方案

两种方案二选一即可:

方案1:修改运行时配置(推荐)

如果项目目标框架为.NET Framework 4.7及以上版本,直接在项目web.config的<configuration>下的<runtime>节点添加配置:

<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />

修改完成后重启IIS Express即可生效,无需修改系统文件。

方案2:修改IIS Express进程manifest

如果目标框架版本较低,可以修改iisexpress.exe的嵌入manifest:

  1. 打开Visual Studio开发者命令提示符
  2. 执行命令修改对应架构的iisexpress.exe,64位路径为C:\Program Files\IIS Express\iisexpress.exe,32位路径为C:\Program Files (x86)\IIS Express\iisexpress.exe:
mt.exe -manifest "你的manifest文件路径" -outputresource:"对应iisexpress.exe路径;#1"
  1. 重启IIS Express生效。

正式IIS部署场景解决方案

无需修改IIS宿主程序配置,同样优先使用运行时配置方案:

  • 确认项目目标框架为.NET Framework 4.7及以上
  • 在web.config的<runtime>节点添加上述相同的AppContext开关配置
  • 重启对应站点的应用程序池生效

全版本兼容方案

如果项目目标框架低于.NET Framework 4.7,可以直接在路径前加Win32长路径前缀\\?\绕过路径长度校验,修改你的代码如下:

File.WriteAllText(@"\\?\C:\LongFileName" + new string('0', 500) + ".txt", "LongFileName");

该方案不需要修改任何系统或项目配置,兼容性最强。如果是访问UNC共享路径,前缀格式为\\?\UNC\服务器地址\共享目录\路径。

内容的提问来源于stack exchange,提问作者Robin Day

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:06:11