2009-12-18 4 views
1

ftp를 통해 이전 AS/400 서버에서 일부 파일을 다운로드해야합니다. '나는 AS400을 추측하고있어FtpWebRequest AS/400에 연결

501 Character (/) not allowed in object name. 

보다 다른 경로 구분 기호를 사용하여 /하지만 난 할 수 있습니다

FtpWebRequest _request = (FtpWebRequest)WebRequest.Create("ftp://ftpaddress/FOO.CSV"); 
_request.Credentials = new NetworkCredential(_ftpUsername, _ftpPassword); 
_request.Method = WebRequestMethods.Ftp.DownloadFile; 
FtpWebResponse response = (FtpWebResponse)_request.GetResponse(); 

그러나 예외가 메시지와 함께 발생되고있다 : 내 코드는 더 많거나 적은처럼 보이는 (1) FtpWebRequest가 수락하고 (2) AS400이 이해하는 방식으로 URI를 구문 분석하는 방법을 파악합니다.

누구든지이 문제에 부딪 혔습니까?

답변

2

this page 따르면, FWD 되는 경로 구분자 슬래시

슬래시는 FTP 서버에 전송 경로의 구분 문자이다.

현재에서는 FtpWebRequest가 견적을 지원하지 않습니다 내가 너희를 오버라이드 (override)하는하실 수있는 방법을 생각할 수 없다 :

마이크로 소프트의 포럼에서 similar conversation 이상 (2005 시대)가에서는 FtpWebRequest에서 버그 표시 가장 최근 버전 이상으로마리야 Atanasova [NCL] MSFT, 중재자 11 월 2005 년

한번에 업데이트를 우리의 코드를 노출하지 않고 방법 다른 라이브러리를 사용해보십시오. MS 포럼 스레드는 여러 가지가 있습니다.

2

나는 과거에이 메시지를 종종 보았고 이름 형식을 변경하는 것을 잊었습니다.

거기 AS400과 FTP를 할 때이 이름 형식이 가능하며, 그것이 FTP 명령 NAMEFMT으로 변경할 수 있습니다

0 (라이브러리 \의 filename.member) 라이브러리 시스템 파일입니다

1 CSV 파일은 기본적으로

될 것 IFS에있는 파일, 그것은 1 0

변경으로 설정하고 그것을 작동합니다. 그러나 나는 그것이 FtpWebRequest로 어떻게 바뀔 수 있는지 잘 모르겠다.

+0

이것은 대부분 문제 일 수 있습니다. 기본적으로 라이브러리와 파일을 탐색하고 있습니다. 'namefmt 1 '로 전환하면 CSV 파일이있는 것으로 추측되는 IFS를 탐색합니다. –

0

FTP 서버는 첫 번째 명령을 기반으로 사용하려는 NameFormat을 결정합니다. "cd/home"으로 시작하면 FTP 서버는 자동으로 NAMEFMT를 1로 설정합니다.

실제로 원격 FTP 명령 NAMEFMT를 사용하여 세션 중에 수동으로 변경할 수 있습니다. (오래된) iSeries 방식이 필요 없다는 것을 알아 두십시오. NAMEFMT 1을 사용하여 iSeries에서 모든 오브젝트를 지정할 수 있습니다. 예를 들어, "get /QSYS.LIB/MYLIBRARY.LIB/MYFILE.FILE/MYMEMBER.MBR"은 모든 iSeries 데이터베이스 테이블에 대한 트릭을 수행합니다. 심지어 여러 멤버 파일!

관련 문제