質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

9490閲覧

FTPでファイル転送するとタイムアウトになります。

byori

総合スコア71

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2020/04/15 07:18

以前より動作しているアプリ(C#,社内開発)を最近購入したパソコンで動かすとタイムアウトになり画像が転送できません。

従来のパソコン(Windows10 winver:1809)では、問題なく動作し、最近購入したパソコン(Windows10 winver:1903)ではタイムアウトになります。
このアプリは、SQLでデータを転記後画像ファイルを転記しています。

転記先は、外部のレンタルサーバーです(カゴヤジャパン)。

Windows Defender も疑い「https://www.pasoble.jp/windows/10/08885.html」で「改ざん防止」を止めてみたのですが変わりませんでした。最新でないウインドウズで動作しているのでコードの問題よりセキュリティ?とも思いますが、あと何が考えられるか教えてください。
開発環境 VS2010 C# Windows10

C#

1 public class UploadImages 2 { 3 public string id, // 弊社のID 4 path, // 対象イメージのパス 5 kind, // 対象イメージの委託元 6 cutLine, // 切り取りサイズ 7 tempPath, // 元のファイルから必要な部分だけ抜き出し画像ファイルを再作成するパス 8 bikou; // 備考欄 9 public UploadImages(string _id, string _path, string _kind, string _cutLine, string _tempPath, string _bikou) 10 { 11 this.id = _id; 12 this.path = _path; 13 this.kind = _kind; 14 this.cutLine = _cutLine; 15 this.tempPath = _tempPath; 16 this.bikou = _bikou; 17 } 18 } 19 20 21 abc.cs 22 // アップロード 23 Ftp ftp = new Ftp(); 24 ftp.adr = Form1._formInstatns.FtpServer; 25 ftp.usr = Form1._formInstatns.FtpUser; 26 ftp.pwl = Form1._formInstatns.FtpPassword; 27 28 foreach (var txt in uploadFiles) 29 { 30 if (txt.tempPath.Length > 0) 31 { 32 // 依頼イメージ転送 33 ftp.FtpUpload(txt); 34 : 35 } 36 } 37 38Ftp.cs 39 /// <summary> 40 /// アップロード(JPG) 41 /// </summary> 42 /// <param name="upFile"></param> 43 public void FtpUpload(Byouri.ReportWebForm.UploadImages upFile) 44 { 45 // Jpg ファイル名を抽出してアップする 46 int pos = upFile.tempPath.LastIndexOf('\'); 47 string mei = upFile.tempPath.Substring(pos + 1); 48 49 if (!FtpOpen(mei)) 50 return; 51 52 try 53 { 54 // MethodにWebRequestMethods.Ftp.UploadFile("STOR")を設定 55 ftpReq.Method = System.Net.WebRequestMethods.Ftp.UploadFile; 56 // 要求の完了後に接続を閉じる 57 ftpReq.KeepAlive = true; 58 // ASCIIモードで転送する 59 ftpReq.UseBinary = false; 60 // PASVモードを無効にする 61 ftpReq.UsePassive = false; 62 63 //System.Net.WebRequest.DefaultWebProxy = null; 64 ftpReq.Proxy = null; 65 ftpRes = (System.Net.FtpWebResponse)ftpReq.GetResponse(); 66 67 //ファイルをアップロードするためのStreamを取得 68 System.IO.Stream reqStrm = ftpReq.GetRequestStream(); 69 70 //アップロードするファイルを開く 71 System.IO.FileStream fs = new System.IO.FileStream(upFile.tempPath, System.IO.FileMode.Open, System.IO.FileAccess.Read); 72 73 //アップロードStreamに書き込む 74 byte[] buffer = new byte[1024]; 75 while (true) 76 { 77 int readSize = fs.Read(buffer, 0, buffer.Length); 78 if (readSize == 0) 79 break; 80 reqStrm.Write(buffer, 0, readSize); 81 } 82 fs.Close(); 83 reqStrm.Close(); 84 85 //FtpClose(); 86 } 87 catch (Exception ex) 88 { 89 MessageBox.Show(ex.Message); 90 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/04/15 07:24

尋ねる前にまずログをとってどこでタイムアウトになっているか特定してください。
guest

回答1

0

ベストアンサー

まず、FileZilla, WinSCP等の一般的なFTPクライアントでの接続、転送は出来るかどうかを確認してみてください。

  • 転送出来ない場合

ネットワーク機器や、ファイアウォールソフトの設定等によりブロックされている可能性があります。FTPクライアントのログを確認して原因を特定してください。

  • 転送出来る場合

FTPクラス内部で使用されているFTPコマンドに問題があるのかもしれません。Microsoftは、新規開発でのFtpWebRequestの使用を推奨していないので、FluentFTP等の代替ライブラリを検討してみてください。
FtpWebRequest クラス(注釈を確認)

投稿2020/04/15 13:44

編集2020/04/17 02:20
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

byori

2020/04/16 02:24

お世話になります。 WinSCP をダウンロードしてアップロードなど試してみました。 問題なくできたので、FtpWebRequestの使用したコードに問題があるようですね。 FluentFTPを試そうとNugetでインストールしようとしましたが、 PM> Install-Package FluentFTP -Version 32.3.3 Install-Package : 'FluentFTP' にはすでに 'NETStandard.Library' に対して定義された依存関係があります。 となって試せません。VS2010 では、古くてダメなのかもしれません。Nuget アンインストール、再インストールしようとしましたが、新しいバージョンのNugetが出てきません。 このバージョンでは無理?かもしれません。(<= 現在格闘中) FluentFTP等で試してみます。
退会済みユーザー

退会済みユーザー

2020/04/16 02:51

.NET Standard用のDLLと.NET Framework用のDLLがあるので、.NET Framework用のを参照してみてください。(netXXとなっているもの)
byori

2021/03/04 07:38

うまくできなかったので挫折しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問