Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Markéta Trvalcová:22.1.2018 15:51

Ahoj, snažím se poslat data na ftp, které nepodporuje pasivní mód.. v této věci se moc nevyznám, můžete mi prosím poradit co s touto chybovou hláškou?

Kód:

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftpConnect");
                request.Method = WebRequestMethods.Ftp.UploadFile;

                // This example assumes the FTP site uses anonymous logon.
                request.Credentials = new NetworkCredential("username", "password");

                // Copy the contents of the file to the request stream.
                StreamReader sourceStream = new StreamReader("file"");
                byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
                sourceStream.Close();
                request.ContentLength = fileContents.Length;
                request.UsePassive = false;

                Stream requestStream = request.GetRequestStream();
                requestStream.Write(fileContents, 0, fileContents.Length);
                requestStream.Close();

                FtpWebResponse response = (FtpWebResponse)request.GetResponse();

                Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);

                response.Close();

Zapnula jsem si tracemode, abych viděla co se děje a vypíše toto:

System.Net Information: 0 : [9600] FtpControlStre­am#49385318 - Přijatá odpověď [220 FTP Server Ready]
System.Net Information: 0 : [9600] FtpControlStre­am#49385318 - Odesílání příkazu [USER TrvalcovaM]
System.Net Information: 0 : [9600] FtpControlStre­am#49385318 - Přijatá odpověď [331 User TrvalcovaM logged in, needs password]
System.Net Information: 0 : [9600] FtpControlStre­am#49385318 - Odesílání příkazu [PASS ********]
System.Net Information: 0 : [9600] FtpControlStre­am#49385318 - Přijatá odpověď [230 Password ok, FTP server ready]
System.Net Information: 0 : [9600] FtpControlStre­am#49385318 - Odesílání příkazu [OPTS utf8 on]
System.Net Information: 0 : [9600] FtpControlStre­am#49385318 - Přijatá odpověď [550 Unknown command]
System.Net Information: 0 : [9600] FtpControlStre­am#49385318 - Odesílání příkazu [PWD]
System.Net Information: 0 : [9600] FtpControlStre­am#49385318 - Přijatá odpověď [257 "/" PWD Successful.]
System.Net Information: 0 : [9600] FtpControlStre­am#49385318 - Odesílání příkazu [TYPE I]
System.Net Information: 0 : [9600] FtpControlStre­am#49385318 - Přijatá odpověď [200 Binary transfer mode active.]
System.Net Information: 0 : [9600] FtpControlStre­am#49385318 - Odesílání příkazu [PORT 172,17,1,100,­213,154]
System.Net Information: 0 : [9600] FtpControlStre­am#49385318 - Přijatá odpověď [200 PORT command succeeded]
System.Net Information: 0 : [9600] FtpControlStre­am#49385318 - Odesílání příkazu [STOR Test/test.xml]
System.Net Information: 0 : [9600] FtpWebRequest#687191::(U­volnění připojení FTP#49385318.)
System.Net Error: 0 : [9600] Výjimka v FtpWebRequest#687191::Get­RequestStream – Nadřízené připojení bylo uzavřeno: Server potvrdil narušení protokolu..
v System.Net.FtpWeb­Request.SyncRe­questCallback(Ob­ject obj)
v System.Net.FtpWeb­Request.Reques­tCallback(Object obj)
v System.Net.Com­mandStream.Dis­pose(Boolean disposing)
v System.IO.Stre­am.Close()
v System.IO.Stre­am.Dispose()
v System.Net.Con­nectionPool.Des­troy(PooledStre­am pooledStream)
v System.Net.Con­nectionPool.Put­Connection(Po­oledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse)
v System.Net.FtpWeb­Request.FinishRe­questStage(Re­questStage stage)
v System.Net.FtpWeb­Request.GetRe­questStream()
Exception thrown: 'System.Net.We­bException' in System.dll

Chybu Nadřízené připojení bylo uzavřeno: Server potvrdil narušení protokolu.. jsem nikde nenašla, nebo alespoň žádné řešení, můžete mi prosím poradit?

 
Odpovědět
22.1.2018 15:51
Avatar
Mirek Slouka
Člen
Avatar
Mirek Slouka:22.1.2018 17:47

Ahoj, zkus celý blok kódu hodit do try catch bloku a zkopíruj sem tu výjimku, co se ti ukáže.

Nahoru Odpovědět
22.1.2018 17:47
I can explain it to you, but I can't understand it for you.
Avatar
Martin Holý
Člen
Avatar
Martin Holý:22.1.2018 18:09

na to je lepsi mit .NET v anglictine. mas pak vetsi sanci, že něco najdes, když pak googlis tu vyjimku

 
Nahoru Odpovědět
22.1.2018 18:09
Avatar
Markéta Trvalcová:23.1.2018 9:12

Mirek:
vyhodí to stejnou exception co je uvedena výše, tedy:
System.Net.We­bException: Nadřízené připojení bylo uzavřeno: Server potvrdil narušení protokolu..
v System.Net.FtpWeb­Request.SyncRe­questCallback(Ob­ject obj)
v System.Net.FtpWeb­Request.Reques­tCallback(Object obj)
v System.Net.Com­mandStream.Dis­pose(Boolean disposing)
v System.IO.Stre­am.Close()
v System.IO.Stre­am.Dispose()
v System.Net.Con­nectionPool.Des­troy(PooledStre­am pooledStream)
v System.Net.Con­nectionPool.Put­Connection(Po­oledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse)
v System.Net.FtpWeb­Request.FinishRe­questStage(Re­questStage stage)
v System.Net.FtpWeb­Request.GetRe­questStream()
v FTPTEST.Program­.Main(String[] args) v c:\users\rope­trasek\documen­ts\visual studio 2015\Projects\FTPTES­T\FTPTEST\Pro­gram.cs:řádek 29

Martin:
Ono není takový problém si přepnout přepnout výjimku do angličtiny :) Stačí doplnit tyto 2 řádky:

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;

Zde je originál:
System.Net.We­bException: The underlying connection was closed: The server committed a protocol violation.
at System.Net.FtpWeb­Request.SyncRe­questCallback(Ob­ject obj)
at System.Net.FtpWeb­Request.Reques­tCallback(Object obj)
at System.Net.Com­mandStream.Dis­pose(Boolean disposing)
at System.IO.Stre­am.Close()
at System.IO.Stre­am.Dispose()
at System.Net.Con­nectionPool.Des­troy(PooledStre­am pooledStream)
at System.Net.Con­nectionPool.Put­Connection(Po­oledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse)
at System.Net.FtpWeb­Request.FinishRe­questStage(Re­questStage stage)
at System.Net.FtpWeb­Request.GetRe­questStream()
at FTPTEST.Program­.Main(String[] args) in c:\users\rope­trasek\documen­ts\visual studio 2015\Projects\FTPTES­T\FTPTEST\Pro­gram.cs:line 29

A samozřejmě jsem se snažila googlit v angličtině :)

 
Nahoru Odpovědět
23.1.2018 9:12
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.