C#识别转义序列错误:访问内部服务器文件失败求助
问题分析与修复方案
你的代码主要存在网络共享路径格式错误和字符串转义处理不当两个核心问题,具体修正如下:
错误点拆解
- 路径格式错误:访问Windows网络共享目录必须使用
\\服务器名\共享文件夹\文件的格式,你混用了\和/,且开头仅写了单个\,系统无法识别为合法的网络共享路径。 - 字符串转义问题:C#普通字符串里的
\是转义字符,直接写\会触发"Unrecognized escape sequence"错误;若使用逐字字符串(加@前缀)则无需转义\,但需保证路径格式本身正确。
修正后的代码
if (usr.Production == true) { string fileName = ((Label)GridView_Attachments.Rows[index].FindControl("Question_Attachments")).Text; // 用逐字字符串+标准共享路径格式,避免转义问题 strURL = @"\\" + "xyz2112.internal.rush.com\\Cygnus\\" + fileName; // 也可使用字符串插值简化写法: // strURL = $"\\\\xyz2112.internal.rush.com\\Cygnus\\{fileName}"; } new Process { StartInfo = new ProcessStartInfo(strURL) { UseShellExecute = true } }.Start();
额外注意事项
- 确认服务器上的
Cygnus文件夹已设置为共享目录,且运行代码的用户拥有该目录的读取权限。 - 文件名含空格或特殊字符时无需额外处理,
ProcessStartInfo会自动适配合法格式。 UseShellExecute = true是必须的,系统会调用对应默认程序打开不同类型文件(如图片查看器打开.jpg、Office打开.doc/.xls)。
内容的提问来源于stack exchange,提问作者Johnny Bones
相关产品推荐
相关产品推荐

