■81340 / inTopicNo.2) |
Re[1]: vb netのftp接続について |
□投稿者/ 魔界の仮面弁士 (893回)-(2016/09/08(Thu) 20:33:53)
|
■No81339 (かずま さん) に返信
> VB.netを用いて、ftp接続でファイル一覧を取得しようとしているのですが
対象となる FTP サーバーは何を利用していますか?
> エラーがでまして、
FTP サーバー側の通信ログには、どのように記録されていましたか?
それをコマンドプロンプトからのリクエストと比較してみれば、
問題箇所が分かるかもしれません。
たとえば FtpWebRequest の場合、"OPTS utf8 on" コマンドを送出しますが、
これは FTP コマンドでは送出されないなどの違いがあります。
サーバー側のログを取得できない場合は、クライアント側で
ロギングしてみてください。
FTP コマンドの場合は「-d」オプションで通信内容を記録できます。
FtpWebRequest の場合は、App.config に下記を追加すれば OK です。
<configuration>
<system.diagnostics>
<sources>
<source name="System.Net">
<listeners>
<add name="System.Net"/>
</listeners>
</source>
</sources>
<switches>
<add name="System.Net" value="Information"/>
</switches>
<sharedListeners>
<add name="System.Net" initializeData="true"
type="System.Diagnostics.ConsoleTraceListener" />
</sharedListeners>
<trace autoflush="true"/>
</system.diagnostics>
</configuration>
> 'ファイル一覧を取得するディレクトリのURI '
> Dim u As New Uri("ftp://namae:pass@192.168.1.1/.DATA01/")
> 'ログインユーザー名とパスワードを設定
> ftpReq.Credentials = New System.Net.NetworkCredential("system2", "system2")
パスワードとして、「namae/pass」と「system2/system2」という
2 つの組み合わせが指定されていますが、どちらが本当の情報でしょうか。
それとも、それぞれ異なる目的で設定されているパスワードでしょうか?
Imports System.IO
Imports System.Net
Module Module1
Sub Main()
Dim u As New Uri("ftp://ftp.microsoft.com/developr/vb/")
Dim ftpReq = DirectCast(WebRequest.Create(u), FtpWebRequest)
ftpReq.Credentials = New NetworkCredential("anonymous", "user@example.com")
ftpReq.Method = WebRequestMethods.Ftp.ListDirectoryDetails
ftpReq.KeepAlive = False
ftpReq.UsePassive = False
Dim ftpRes = DirectCast(ftpReq.GetResponse(), FtpWebResponse)
Dim sr As New StreamReader(ftpRes.GetResponseStream())
Dim res As String = sr.ReadToEnd()
Console.WriteLine(res)
sr.Close()
Console.WriteLine("{0}: {1}", ftpRes.StatusCode, ftpRes.StatusDescription)
ftpRes.Close()
End Sub
End Module
> 追加情報:リモート サーバーがエラーを返しました: (501) パラメーターまたは引数に構文エラーがあります
501 は、クライアントから要求された FTP コマンドの引数に
問題があることを示します。
サポートされていないコマンドであれば、500 や 502 になるはず。
> フルパスは.LIB01/LIB/.DATA01/でして、.DATA01/のファイルを取得したいのですが。
> コマンドプロンプトでは入れるのに、vb.netだと入れません。
コマンドプロンプトの FTP で、ログイン直後に「pwd」コマンドを
送出してみてください。サーバーによっては、ログインユーザー別に
用意されたサブフォルダが、初期パスになっていることがあります。
|
|