0

ネットワークの外部にあるFTPサーバーにアクセスしてCSVファイルを取得しようとしています。これが私が使用しているコードです

string XMLPATH = @"\\server\file.csv";
FileWebRequest request = (FileWebRequest)FileWebRequest.Create(XMLPATH);
request.Credentials = new NetworkCredential("admin", "password");
FileWebResponse response = request.GetResponse() as FileWebResponse;
Stream stReader = response.GetResponseStream();

コンソールアプリでこれを実行すると、このメッセージが表示されます。

Logon failure: unknown user name or bad password

サーバーの場所に移動してWindowsエクスプローラーでファイルを取得すると、正常にログインしてファイルを取得できます。その後、私のアプリケーションはファイルに問題なくアクセスできます。この前のスタックスレッドを読みました

ログオンの失敗:不明なユーザー名または不正なパスワード?しかし、私は正しいユーザー名とパスワードを使用しています

そして、これを設定に追加しました

<system.net>
 <defaultProxy useDefaultCredentials="false">
  <proxy usesystemdefault="True"/>
 </defaultProxy>
</system.net>

そして、それは何も変わりません。ドメインを資格情報コンストラクターに追加しようとしましたが、それでも何も修正されません。この接続はクライアントアプリケーションとして行う必要があるため、前の投稿は私のものとは少し異なります。どんな助けでも大歓迎です。ありがとう

編集

興味があったので、Windowsエクスプローラーとアプリケーションの要求の両方の呼び出しでWiresharkトレースを実行しました。エクスプローラーを使用する場合、適切な資格情報を使用してリクエストを送信します。ただし、アプリケーションを使用すると、マシンのログイン名(別名ユーザーID)としてリクエストが送信されます。リクエストでリクエストのクレデンシャルを送信すると、デフォルトでログインしているユーザーになるのはなぜですか?このために構成する必要がある設定はありますか?

4

2 に答える 2

0

アプリケーションを実行するサーバー上にローカル ユーザーを作成することで、これを修正できました。このユーザーは、FTP サーバーへの読み取り権限を持つユーザーとまったく同じ方法でセットアップされます。

于 2013-03-04T20:58:45.543 に答える
0

ドメイン (またはコンピューター名) を指定する必要があると思われます。

new NetworkCredential("admin", "password", domainOrComputerName)
于 2013-03-04T14:33:25.877 に答える