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

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

ただいまの
回答率

88.37%

C# サーバー上のcsvファイルをダウンロード

受付中

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,661

kn0607phno

score 6

y_waiwaiさん、回答ありがとうございます。
より具体的な情報を質問文に追記します。
IISサーバー環境で、クライアントPCからの操作で、サーバーの「http://aaaa/bbb/ccc.csv」ファイルをクライアントPCにダウンロードしたいのですが。


以下のコードを自分のPCのデバッグ環境で実行すると自分のPCのc:\aaaフォルダにbbb.csvがダウンロードされるのですが、サーバーにセットアップした環境で実行すると、エラーが発生します。

System.Net.WebClient wc = new System.Net.WebClient();
wc.DownloadFile("http://aaaa/bbb/ccc.csv", @"c:/aaa/bbb.csv");
wc.Dispose();

エラー内容は、try-catchで取得した内容となりますが、以下になります。
ex.Message --->「WebClient 要求で例外が発生しました。」
ex.InnerException.Message --->「パス 'c:\aaa\bbb.csv' の一部が見つかりませんでした。   」

どなたか何が原因と解決方法を教えて頂きたいのですが。
よろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+1

「サーバーにセットアップした環境」に、 C:\aaa というフォルダがないのかもしれません。


状況がよくわからないので整理すると(できてるかな?)……。

[ A:kn0607phnoさんのPC ]----[ B:サーバー (IIS動作中) ]

こういう環境下で、Bのサーバーにて http://aaaa/bbb/ccc.csv というURLでCSVが公開されている。
kn0607phnoさんが作ったプログラムを、
①AのPCからVisual Studioでデバッグで動かすと、AのPCの C:\aaa に bbb.csv が保存される
②Bのサーバー上で動かすと、「WebClient 要求で例外が発生しました。」等の例外が発生する
③ただしBのサーバーに C:\aaa というフォルダを作ってから動かすと、例外にはならずBのサーバーの C:\aaa に bbb.csv が保存される

やりたいことは、
任意のPCからの何らかの操作により、任意のPCの C:\aaa に bbb.csv が保存されるようにしたい。

で、あってますか?
あっているにせよあっていないにせよ、そのあたりを質問に追記していただけるとわかりやすいかと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/20 11:23

    algさん、Zuishinsann,回答ありがとうございます。
    サーバー環境に「c:\aaa」のフォルダを作成したところ、エラー発生せずにbbb.csvがダウンロードされました!
    しかしながら、やりたい事とは異なりまして。
    やりたい事は、サーバーの「http://aaaa/bbb/ccc.csv」ファイルをローカルPCにダウンロードをしたいのです。
    DownloadFileの第2引数の指定に問題があるのでしょうか?

    キャンセル

  • 2018/03/20 13:15

    algさん、ご指摘ありがとうございます。
    やりたいことは、
    「任意のPCからの何らかの操作により、任意のPCの C:\aaa に bbb.csv が保存されるようにしたい。」
    であっております。
    Zuishinさんの言うように、javascriptなどでコードを作れば動作するのでしょうか?

    キャンセル

  • 2018/03/20 13:34

    「任意のPC」にプログラムをインストール&実行可能
     →kn0607phnoさんが作ったプログラムをインストール&実行すればよい

    「任意のPC」にプログラムをインストール不可・ブラウザからの操作でローカルの "C:\aaa\bbb.csv" に保存したい
     →JavaScript

    となりそうですね。

    キャンセル

  • 2018/03/20 16:21

    でもJavaScriptで"C:\aaa\bbb.csv"に「必ず」保存する、というのは無理かもしれません。
    "bbb.csv"という名前のファイルを、ユーザーが保存先を選んで保存する、というのはできそうですが。

    キャンセル

+1

c:\aaa が無いかアクセス権が無いのでは?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/20 15:52

    何に困っているのかわかりませんがアプリケーションを作ったことがないならここで断片的に聞くより適当な入門書を買ってきて読んだ方が早いと思います。

    自分の PC のデバッグ環境で期待通り動作しているとのことなので、それでできているはずです。
    ビルドして実行すればいいのでは?

    キャンセル

  • 2018/03/20 17:21

    ここの回答を頂いて、デバッグ環境でも思い通りには動いてない事がわかりました。
    勘違いしてました。

    「C# で作ってるなら C# でいいでしょう。」回答いただいており、
    こちらもC#で作りたいと思っておりますが、C#内でjavascriptのコードを記述するような書き方の事を言っているのでしょうか?

    キャンセル

  • 2018/03/20 17:49

    Javascript のコードを記述というのが何のことかわかりませんが C# でなく Javascript でも当然できますので、そちらの方が得意ならそちらで作ればいいかと。

    キャンセル

0

なんかよーわからんけど、サーバからの操作(だけで)ローカルマシンにファイルをコピーしたいということかな?

まずはそこらへんの仕様をはっきりしましょう。
また、そのサーバというのはどういうものか、サーバとローカルの接続はどうなってるのか、ということも具体的に提示してください

そこらへんの具体的な情報を質問文に追記してくださいね

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/20 14:41

    このような環境で、
    http://wa3.i-3-i.info/word12466.html

    クライアントPCのIEから操作した時にエラーが発生します。

    キャンセル

  • 2018/03/20 14:43

    えーと、話がわからないですが、そのC#のコードはどこに入りますか?

    キャンセル

  • 2018/03/20 16:59

    サーバーですね!
    デバッグ環境でも、思い通りには動いてないですね!

    キャンセル

0

Web サーバーがどうなっているか不明ですが、「自分のPCのデバッグ環境」では IIS Express、「サーバーにセットアップした環境」では IIS だとすると、アクセス権が違うということは認識されてますか?

匿名アクセスの場合、IIS Express は Visual Studio を起動したユーザーアカウント(管理者?)、IIS は NT AUTHORITY\IUSR になります。

NT AUTHORITY\IUSR に読み取り権限が必要ですが、そこはどうなんでしょう?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/20 13:21

    SurferOnWwwさん、ご回答ありがとうございます。
    「自分のPCのデバッグ環境」では IIS Expressを「ローカルIIS」にしております。
    「サーバーにセットアップした環境」では IISで、アクセス権が違うということは認識していません。

    クライアントPCの「c:\aaa」フォルダに権限が必要なのでしょうか?

    キャンセル

  • 2018/03/20 14:26 編集

    > クライアントPCの「c:\aaa」フォルダに権限が必要なのでしょうか?

    CSV ファイルは Web サーバー (IIS) の仮想ディレクトリ/アプリケーションにあって、クライアント PC から要求を受けると IIS がそのファイルを読み出してきてクライアント PC に送信するのですよね? であれば違います。

    上に書いた「そのファイルを読み出してきて」ということを行うには、IIS が読み取り権限を持ってないとダメなのは分かりますか? そういうことを言っているのです。

    キャンセル

  • 2018/03/20 17:05

    解りやすい説明ありがとうございます。
    「クライアントPC→IIS→CSVを読み出し」なので、IISが読み取り権限を持ってないとイケないのですね。

    IISの設定に読み取り権限を付加するところがあるのでしょうか?

    ※IISの設定で「http://aaaa/bbb」のフォルダの匿名認証は「有効」にセットしました。
     これとは違うのでしょうか?

    キャンセル

  • 2018/03/20 18:22

    > IISの設定に読み取り権限を付加するところがあるのでしょうか?

    IIS ではなくて、Windows のエクスプローラー(IE ではないですよ)で CSV ファイルがあるフォルダを右クリックしてプロパティを開きその[セキュリティ]タブで設定するのです。

    その前に、クライアント PC の IE のアドレスバーに Web サーバーの当該 CSV ファイルの url を入力して要求をかけて、CSV ファイルはダウンロードできるのは確認したのですか?

    ダウンロードできるのであればアクセス権の問題いはないので私のレスは忘れて良いです。

    キャンセル

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

  • ただいまの回答率 88.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る