スキップしてメイン コンテンツに移動

ファイルパスがおかしくてもうまくいく時といかない時がある?

十分に検証していないので、自分の中ではオカルトな感じではありますが・・。

FTPサーバからファイルをダウンロードする機能を実装し、動作確認をしていた時のことです。

Visual StudioのReleaseモードでビルドし、問題なく動作していることを確認してデプロイ。
んで、デプロイした先で実行しようとした所。

WebClient要求で例外が発生しました。

という例外が。

あれー? と思い、Visual Studioでトレースしようとしたのですが、こちらでは問題ない様子。
デプロイ先も、開発機と同じPC。
FTPサーバもログインアカウントも同じ。

よくわからないけど、これじゃダメなのかーと思ってSystem.Net.WebClientを使っている部分をコメントアウトしてFtpWebRequest + FtpWebResponseを使う方法に切り替えてみました。

結果は、エラーメッセージこそ違うものの、


  • Visual Studioから実行した場合は正常終了
  • Visual StudioのReleaseフォルダから実行した場合も正常終了
  • それ以外の場所(デスクトップでもフォルダ内でも)NG


でした。


こうなったら全部調べるかーと思い、あちこちにトレースするメソッドを入れた(といってもMessageBox.Showしただけ)結果、単にダウンロード先のローカルパスが不正だったという粗末なオチでした。

OK→C:\work\test.dat
NG→C:work\test.dat ※ドライブレター直後のパス区切り文字がない

どうやらこれ、System.Net.WebClientとかFtpWebResponse周辺のメソッドではエラーになるんですね。
というか、逆にSystem.IoとかMy.Computer.FileSystemあたりではエラーにならないんですね。
いずれにせよ今後似たような例外が出たらパスまわりを注意せよ、ということですね。


余談ですが、なんでReleaseフォルダ上で動作させても正常終了したのか、ちょっと謎です。
デプロイ先との違いはvshost.exeとか.pdbファイルとかの有無ですが、それが何か補正かけてるんでしょうか・・・。

コメント

このブログの人気の投稿

【VS2019】ある日急にデザイナーがエラーを吐いた時の対処メモ

仕事でVisual Studio 2019 Communityを使う時があるのですが、ある時、前日まで普通に使えていたプロジェクトのうち、フォームのデザイナがエラーを起こしてしまいました。 --- データが失われる可能性を防ぐため、デザイナーの読み込み前に以下のエラーを解決する必要があります。 このファイルのデザイナーに、デザインできるクラスがないため、デザイナーを表示できませんでした。 --- こんなメッセージが。 結論から言うと直ったのですが、この現象への対処法を調べましたのでまとめます。

今更ながらマキシマムザホルモン「絶望ビリー」出演者が誰なのか調べてみた

ふと思い立ってマキシマムザホルモンの「絶望ビリー」のPVに登場する人たちを調べてみました。 ・・・といっても下記の二組(というか一組と一人)は不明なままです。 【不明な人たち】 ・アコギの二人組 ・フェンスを叩いて叫んでいるマッチョな人 ・アナウンサー ・クイズ番組の回答者(一人は亮君だけど) 【判明した出演者】 ・ビジュアル系のバンド・・・ PARFAIT (複数のサイトで確認。たぶん合ってる) ・アイドル系の女の子・・・ 辰巳 奈都子 ・ヒップホップ系の二人組・・・アンディとジョージ☆(というらしい。真偽不明) ・ギターを弾いて歌っている女性・・・ KIKU ( THE SWEET TRIP というバンドのvo/g) というわけで、全員はわかりませんでした。 個人的にはKIKUという人のギターの弾き方が気になっていたので、名前がわかって良かったですw

シーランド公国の爵位をとってみた

ほとんど出落ちみたいな話ですけどね・・。 ネット上ではフツーに情報としてありますが、 シーランド公国 という(自称)国家の爵位を取ってみました。