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

无法在局域网创建目录:路径拼接异常及PathTooLongException问题

问题解决步骤

一、先修复路径拼接失败的问题

你的代码里fullPath没有正确拼接出P00125,核心原因是路径字符串的转义错误:

  • 检查GetServerDirectory返回的serverPath格式:你预期的共享路径\\192.168.100.9\98 PatientsScan写法错误,在C#中反斜杠必须转义为\\,或者用@前缀声明原始字符串。正确的写法应该是@"\\192.168.100.9\98 PatientsScan"或者"\\\\192.168.100.9\\98 PatientsScan"。如果serverPath里的\98未正确转义,会被解析为无效的八进制转义字符,导致Path.Combine无法识别路径结构,自然拼不上后续的P00125。
  • 验证serverPath实际值:在代码中添加Console.WriteLine(serverPath);,打印返回值确认是否为预期的完整共享路径,有没有被截断或转义错误。

二、解决PathTooLongException异常

如果路径确实超过Windows传统的260字符限制,可通过以下方法处理:

  • 使用\\?\长路径前缀:
    这个前缀可以绕过Windows传统路径长度限制,注意UNC共享路径需要特殊处理:
    string serverPath = GetServerDirectory(serverDirectory);
    // 确保serverPath是正确转义的路径,比如@"\\192.168.100.9\98 PatientsScan"
    string fullPath = Path.Combine(serverPath, "P00125");
    
    // 转换为长路径格式
    if (fullPath.StartsWith(@"\\", StringComparison.Ordinal))
    {
        // UNC路径转换为\\?\UNC\服务器\共享名格式
        fullPath = @"\\?\UNC\" + fullPath.Substring(2);
    }
    else
    {
        // 本地路径直接加\\?\前缀
        fullPath = @"\\?\" + fullPath;
    }
    
    if (!Directory.Exists(fullPath))
        Directory.CreateDirectory(fullPath);
    
  • 启用系统长路径支持:
    打开注册表编辑器,找到HKLM\SYSTEM\CurrentControlSet\Control\FileSystem,新建DWORD值LongPathsEnabled并设置为1,重启系统后,.NET Framework 4.6.2+或.NET Core/.NET 5+的应用可直接支持长路径,无需额外前缀。
  • 升级到.NET Core/.NET 5+:
    这些版本默认支持长路径(配合系统注册表设置或应用配置EnableLongPaths),无需手动处理前缀。

内容的提问来源于stack exchange,提问作者Ramez Ayad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 01:55:22