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

.NET 6 C#控制台访问FTP路径被转为C盘路径报错求助

问题解决:UNC/FTP路径被错误解析为本地C盘路径

问题原因

你使用的//corp/Test/Test.txt写法不规范,.NET的System.IO类无法正确识别:

  • 如果是局域网UNC共享路径,Windows要求必须以双反斜杠开头(\\corp\Test\Test.txt),正斜杠//会被解析为错误的本地路径;
  • 如果是FTP路径,System.IO类不支持FTP协议,必须用专用的FTP请求API处理。

解决方案分两种情况处理

情况1:这是局域网UNC共享路径

  1. 修正路径格式
    将路径改为标准UNC格式:\\corp\Test\Test.txt(用反斜杠,且开头是两个反斜杠),代码里可以用@符号避免转义:
    using System.IO;
    
    var uncFilePath = @"\\corp\Test\Test.txt";
    if (File.Exists(uncFilePath))
    {
        var fileContent = File.ReadAllText(uncFilePath);
        Console.WriteLine(fileContent);
    }
    else
    {
        Console.WriteLine("文件不存在或当前账户无访问权限");
    }
    
  2. 排查访问权限
    • 确认运行程序的账户(比如本地账户、域账户)拥有该共享文件夹的读取权限;
    • 可以先在文件资源管理器里输入\\corp\Test测试是否能正常访问,排除权限和网络问题。

情况2:这是FTP服务器路径

如果实际是FTP地址(比如ftp://corp/Test/Test.txt),不能用System.IO类,需使用FtpWebRequest(.NET内置)处理:

using System.Net;
using System.IO;

var ftpUrl = "ftp://corp/Test/Test.txt";
var credentials = new NetworkCredential("你的FTP用户名", "你的FTP密码");

var request = (FtpWebRequest)WebRequest.Create(ftpUrl);
request.Credentials = credentials;
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.UsePassive = true; // 多数FTP服务器需要被动模式

using (var response = (FtpWebResponse)request.GetResponse())
using (var responseStream = response.GetResponseStream())
using (var reader = new StreamReader(responseStream))
{
    var fileContent = reader.ReadToEnd();
    Console.WriteLine(fileContent);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:45:17