我做了一個批次的類來檢查FTP的文件,下載並刪除他們的FTP。的FtpWebRequest在批量
當我手動運行(而不是在批)它完美的作品和下載的所有文件FTP並刪除它們時,下載完成。
當我嘗試在批處理中運行這個問題開始,我想這兩個服務器端和客戶端批次。
他們都給予timout錯誤:
System.Reflection.TargetInvocationException:異常已通過調用的目標引發異常。 ---> System.Net.WebException:操作已超時。
在System.Net.FtpWebRequest.CheckError()
在System.Net.FtpWebRequest.GetResponse()
---內部異常堆棧跟蹤的結尾---
有誰有任何經驗批量從FTP下載文件的經驗嗎?
我已經嘗試設置超時時間更高。我還測試了執行批處理作業的服務器上的連接,我可以訪問FTP。所以這不是防火牆問題。我認爲它一定是AX內的東西,但我無法想到任何事情。
這是代碼(注:downloadfile和DELETEFILE是相同的代碼,以使與differenct set_method()的連接:
permissionSet = new Set(Types::Class);
files = new List(types::String);
permissionset.add(new InteropPermission(InteropKind::DllInterop));
permissionset.add(new InteropPermission(InteropKind::ClrInterop));
CodeAccessPermission::assertMultiple(permissionset);
ftpo = System.Net.WebRequest::Create(<ftp link>);
request = ftpo;
request.set_KeepAlive(false);
request.set_UsePassive(false);
request.set_UseBinary(true);
request.set_Method("NLST");
credential = new System.Net.NetworkCredential(<user>,<pw>);
request.set_Credentials(credential);
try
{
//first get the filelist from FTP
response = request.GetResponse();
reader = new System.IO.StreamReader(response.GetResponseStream());
while(!reader.get_EndOfStream())
{
text = reader.ReadLine();
files.addStart(text);
}
reader.Close();
response.Close();
CodeAccessPermission::revertAssert();
if(files.elements() >0)
{
it = New ListIterator(files);
while(it.more())
{
filename = it.value();
downloadfile(filename);
deleteFile(filename);
it.next();
}
}
}
這是一個完整的異常:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Net.WebException: The operation has timed out.
at System.Net.FtpWebRequest.CheckError()
at System.Net.FtpWebRequest.GetResponse()
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at ClrBridgeImpl.InvokeClrInstanceMethod(ClrBridgeImpl* , ObjectWrapper* objectWrapper, Char* pszMethodName, Int32 argsLength, ObjectWrapper** arguments, Boolean* argsAreByRef, Boolean* isException)
您可以將生成的錯誤保存到文件,例如? http://dynamicsaxgyan.wordpress.com/2011/04/07/clrinterop-in-x-and-managing-exceptions-dynamics-ax/ – 2013-04-24 06:42:49
完整例外情況已添加到帖子中。這是關於我可以從中獲得的所有信息。 – 2013-04-25 09:14:41
檢查是否從執行Ax服務的服務器可見。也許它不只是服務器名稱,而是傳輸方法(不能從服務器上的20/21端口進行ftp)。 檢查出以下問題是否解決http://stackoverflow.com/questions/16196195/dynamics-ax-ftp-x –
2013-04-27 06:40:30