저는 잠시 동안 켜고 끄는 작은 프로젝트를 진행해 왔으며 가까이에 있다고 생각하지만 문제가 있습니다. 아이디어는 파일을 제 3 자에게 FTP로 보내고 처리하고 5-10 분 후에 결과 세트를 생성합니다.이 결과 세트는 당사 측에서 다운로드하여 처리해야합니다..net 웹 페이지의 AsyncCallback이 실행되지 않습니다.
그래서 코드는, 현재 처리 된 파일의 목록을 기다리고 너무 자주 매를 확인, 파일을 밀어, 그것이 내가 함께
if (!Page.IsPostBack) { string baseLocation = "C:\\temp\\"; string fn = baseLocation + "fxxxupld.inc"; ftp = new FtpClient(FTPServer, FTPUserName, FTPPassword); ftp.Login(); ftp.Upload(fn); AsyncCallback callback = new AsyncCallback(CloseConnection); ftp.ChangeDir("results"); string[] Files = ftp.GetBloombergUploadList(); int CHigh = Files.GetUpperBound(0); String LatestFile = CheckForNewFile(CHigh, ftp); ftp.BeginDownload(LatestFile, "c:\\temp\\Results.txt", callback); } private static string CheckForNewFile(int CHigh,FtpClient ftp) { int NHigh = 0; string LatestFile = ""; while (CHigh >= NHigh) { string[] Files = ftp.GetBloombergUploadList(); NHigh = Files.GetUpperBound(0); LatestFile = Files[NHigh-1].ToString(); Thread.Sleep(3000); } return LatestFile; } private void CloseConnection(IAsyncResult result) { Debug.WriteLine("File downloaded: " + result.IsCompleted.ToString()); if (ftp != null) ftp.Close(); ftp = null; }
매우 간단 자갈길 단지 뭔가 조금 간단 수 있으며 새 파일이 나타나면 다운로드하십시오.
AsyncCallback을 추가하기 전에 페이지가 반환 될 때까지 사용자가 아무 것도 할 수 없다는 것을 제외하고는 프로세스가 정상적으로 작동했으며 AsyncCallback에 갑자기 추가 한 후 UPLOAD 부분은 원격 측에 스팸을 보내고 나는 (또는 적어도 특정 연결을) 충돌시킬 수있었습니다.
아무리 생각해도 ... 말할 필요도없이 일자리를 얻을 수 없을 때 우리 상인들이 조금 화가 나고 Bloomberg가 조금 화가 나면 일을 제대로 처리해야 할 필요가 있습니다. 그것을 :(해결하기 위해 노력하고 3+ 시간을 보낼
감사합니다!
지금 빈 페이지에서 테스트하고 있습니다. Page_Load 핸들러를 사용하여 킥오프 할뿐입니다. 새로 고칠 내용이 없습니다. 어쩌면 나는 그것을 꺼내 다른 곳에서 쫓아 낼 것이다. 단지 그것을 배제하는 것이다. 감사. –
정말 간단한 예제로 문제를 재현 할 수 있다면 코드 샘플을 편집 할 가치가 있습니다. –