C\#FTP 연결 시 경로 문제 해결 방법
본 고 는 주로 C\#FTP 연결 시 경로 문제 에 관 한 내용 을 소개 하고 참고 학습 을 제공 하 며 말 을 많이 하지 않 고 상세 한 소 개 를 하 겠 습 니 다.
오늘 프로젝트 를 개발 할 때 FTP 에 연결 하여 파일 을 가 져 와 야 합 니 다.그 중에서 중요 한 단 계 는 FTP 와 FTP 에 있 는 파일 이 존재 하 는 지 판단 하 는 것 입 니 다.
판단 코드 는 다음 과 같 습 니 다.
/// <summary>
/// FTP
/// </summary>
/// <param name="ftpServerFilePath">FTP </param>
/// <param name="ftpUserId">FTP </param>
/// <param name="ftpPwd">FTP </param>
/// <param name="errorMsg"> </param>
/// <returns></returns>
private bool IsCanConnectFtp(string ftpServerFilePath, string ftpUserId, string ftpPwd, out string errorMsg)
{
bool flag = true;
FtpWebResponse ftpResponse = null;
FtpWebRequest ftpRequest = null;
errorMsg = string.Empty;
try
{
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerFilePath));
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
ftpRequest.Timeout = 2 * 1000;// 2 。
ftpRequest.Credentials = new NetworkCredential(ftpUserId, ftpPwd);
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
}
catch (WebException exception)
{
ftpResponse = (FtpWebResponse)exception.Response;
switch (ftpResponse.StatusCode)
{
case FtpStatusCode.ActionNotTakenFileUnavailable:
errorMsg = " ";
break;
case FtpStatusCode.ActionNotTakenFileUnavailableOrBusy:
errorMsg = " , ";
break;
default:
errorMsg = " ";
break;
}
flag = false;
}
catch
{
errorMsg = " , ";
flag = true;
}
finally
{
if (ftpResponse != null)
{
ftpResponse.Close();
}
}
return flag;
}
ftpServerFilePath 의 경로 가"127.0.0.1\\1.doc"일 때 이상 을 던 집 니 다.이상 내용 은 잘못된 URi 입 니 다.다음 그림 입 니 다.해결 방법
이것 은
FtpWebRequest.Create
연결 할 때'\'와 같은 파일 경로 식별 자 를 식별 하지 못 하기 때문에 위의 이상 을 던 질 수 있 기 때문에 들 어 오 는 매개 변 수 는'127.0.0.1/1.doc'여야 합 니 다.방법 안에서 바 꾸 든 가.코드 는 다음 과 같다.
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerFilePath.Replace("\\","/")));
이렇게 하면 이상 이 발생 하지 않 습 니 다.연결 여부 나 파일 이 존재 하 는 지 스스로 연결 을 확인 하 십시오.https://msdn.microsoft.com/zh-cn/library/system.net.ftpstatuscode(v=vs.110).aspx
아니면 자체 구 글 FtpStatusCode 를 사용 하면 됩 니 다.
그러면 수 정 된 코드 는 다음 과 같다.
/// <summary>
/// FTP
/// </summary>
/// <param name="ftpServerFilePath">FTP </param>
/// <param name="ftpUserId">FTP </param>
/// <param name="ftpPwd">FTP </param>
/// <param name="errorMsg"> </param>
/// <returns></returns>
private bool IsCanConnectFtp(string ftpServerFilePath, string ftpUserId, string ftpPwd, out string errorMsg)
{
bool flag = true;
FtpWebResponse ftpResponse = null;
FtpWebRequest ftpRequest = null;
errorMsg = string.Empty;
try
{
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerFilePath.Replace("\\","/")));
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
ftpRequest.Timeout = 2 * 1000;// 2 。
ftpRequest.Credentials = new NetworkCredential(ftpUserId, ftpPwd);
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
}
catch (WebException exception)
{
ftpResponse = (FtpWebResponse)exception.Response;
switch (ftpResponse.StatusCode)
{
case FtpStatusCode.ActionNotTakenFileUnavailable:
errorMsg = " ";
break;
case FtpStatusCode.ActionNotTakenFileUnavailableOrBusy:
errorMsg = " , ";
break;
default:
errorMsg = " ";
break;
}
flag = false;
}
catch
{
errorMsg = " , ";
flag = true;
}
finally
{
if (ftpResponse != null)
{
ftpResponse.Close();
}
}
return flag;
}
총결산이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 십시오.저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C#Task를 사용하여 비동기식 작업을 수행하는 방법라인이 완성된 후에 이 라인을 다시 시작할 수 없습니다.반대로 조인(Join)만 결합할 수 있습니다 (프로세스가 현재 라인을 막습니다). 임무는 조합할 수 있는 것이다. 연장을 사용하여 그것들을 한데 연결시키는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.