スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【同じタグを付けた記事の一覧】

SkyDrive と WebDAV クライアントと「.NET Passport 認証」

2010年02月11日(木)00時44分

不安定

前回の記事を書いた後、WebDAV についていろいろ検索してわかったことは、これ、Microsoft 社が提案してはじめたものらしいんですが、その割には、当の Windows での扱いというか実装はかなり残念なものであるらしく、不安定であったり、それ以前に繋がらなかったりと、とにかく(Windows 標準機能では)ロクに使えないものとして有名であるみたいです。
そしてその傾向は「98 → 2000 → XP → Vista → 7」と一貫して(それどころか場合によっては悪化すらして)見られる傾向であるらしく、つまり現時点では Microsoft 的にはあまり注力する予定のないもののようで。

Web フォルダ

実際あの後、追加した Web フォルダでいろいろ試してみましたが、小さいファイルを少量コピーする程度なら何とかなるんですが、ファイルが大きかったり量が多かったりすると、エラーがでたり、ハングアップしてたり、エクスプローラが落ちたりと、どうにもうまくいかなくなります。

WebDAV クライアント

しかし、使う予定はなくとも、使えないとなると何とかしてみたいと思うもので、Microsoft 製(Windows 標準機能)に期待できないなら、それ以外の専用に作られたアプリケーション(WebDAV クライアントというそうです)はどうか?ということで、いくつかフリーで公開されているものを試してみました(だったら SkyDrive Explorer 使えば…、というのはひとまずおいて)。

CarotDAV

【追記:2010/02/15】作者様が対応してくださり、現在(2010/02/15)の CarotDAV は「.NET Passport 認証」はおろか、SkyDrive にも直接対応しております。

まずは CarotDAV を。
これは「WebDAV クライアント」で検索するとトップに出てくる、いたるところでお勧めされている、このジャンルにおけるメジャーソフトのようです。
作者は日本人の方ですが UI は英語で、要「.Net Framework」、インストーラでインストールして使います。
で、設定してテストボタンを押してみるも「Unassumed PROPFIND response Status: 200」のダイアログが出て接続できず。
以下のようなエラーで接続不可でした。

System.Net.WebException: Unassumed PROPFIND response
Status: 200
   場所 Rei.Fs.Webdav.WebdavFs.InnerGetInfo(Uri& target, DepthType depth)
   場所 Rei.Fs.Webdav.WebdavFs.GetEntries(Uri& target)
   場所 CarotDAV.MainForm.Client_GetEntries_Connect(Uri& target)

dddav

次に試してみたのがこちら dddav で、上記 CarotDAV の作者様のサイトでも「いまでも CarotDAV が動かない時はまずこれを試します。」と紹介されています。
こちらも作者は日本人の方で UI は日本語(英語版もあり)、C++ で作られていて、「インストール不要・レジストリ未使用」と非常に自分好みのソフトウェアですが、「接続に失敗しました」とダイアログが出て接続できず。

NetDrive

これは海外製(上記リンク先は日本語化パッチを作られている方のサイト)で、このソフトは前述の二つとは少し毛色が違い、アップ(ダウン)ローダ的なものではなく、ネットワークドライブとしてマウントします。
Vista では使えないそうです。
早速インストール & 日本語化して接続してみるも、「https://~、302 Found の WebDAVサーバーに接続できません」で接続できませんでした。

「.NET Passport」認証

そういうわけで、試したどのソフトも接続できなかったわけですが、これはおそらく Windows Live SkyDrive を WebDAV 経由で使用する際の認証方式が(多分ですが)「.NET Passport 認証」で、一般的な WebDAV クライアントがこの認証方式に対応してないためではないかと思います。
例えば CarotDAV の作者様のサイトでは「調べた範囲では、最もたくさんの認証方式に対応しています。」と書かれており、対応している方式として「Basic、Digest、NTLM、Kerberos、SPNEGO、WSSE」が挙げられていますが、「.NET Passport 認証」はありません。
しかし、考えてみれば、WebDAV という(Microsoft 提案とはいえ)オープンな規格を使おう、あるいは提供しようという場合に、「.NET」なんて付いている、いかにも「マイクロソフトオリジナル」的な、特定一社に依存しそうな認証方式を「採用しよう」とはなかなかならないだろうと思いますので、汎用的な WebDAV クライアントが「.NET Passport 認証」を無視してもほとんど問題になることはないんじゃないかという気はします。
ひょっとしたら SkyDrive 以外にこの認証方式を使っているところは存在しないのではなかろうかとすら思います。

とはいえ

といっても、もし SkyDrive を安定して使える WebDAV クライアントがあったとしても、それでは SkyDrive をなんに使うか、というと今のところ自分にとっては使い道が思いつかなかったりします。
「火事や地震でも安全」ということでバックアップ先にできれば、と思いますが、いかに非公開とはいえ一応「外部にある」わけで、例え軽くでも暗号化ぐらいはしておきたいとは思いますし、それで例えば TrueCrypt のような暗号化ディスクを使うとすると、1ファイルあたり50MBという制限がネックになりますし…。
まあ仮に50MB制限がなかったとしても「差分アップロード」のような仕組みがなければ、毎回数GBのイメージファイルをやり取りするわけで、それも現実的ではありませんが。

関連記事

【同じタグを付けた記事の一覧】
バックアップ WindowsLiveSkyDrive

スポンサーサイト

コメントの投稿

非公開コメント

No title

CarotDAV作者のれいです。

> いかにも「マイクロソフトオリジナル」的な、特定一社に依存しそうな認証方式

NTLMもKerberosもSPNEGOのうち殆ども、いかにもMS的な認証方式です。
MSはHTTPに一体いくつ認証方式を作れば気が済むのでしょうか…。

> ひょっとしたら SkyDrive 以外にこの認証方式を使っているところは存在しないのではなかろうかとすら思います。

私の知る限り、WebDAVが使えるサービスはありませんでした。
が、あってもおかしくないと思います。
私が知らないだけだと思います。

なので、Passport認証およびSkyDriveに対応してみました。

一応私のところでは使えていますが、
いくつかサーバーに不具合があるようです。
JPGやBMPが削除できなかったり、ファイル名が化けたりしています。
また、DAV経由だと速度が遅くなるようです。

> SkyDrive をなんに使うか

DAV経由で使えるということは…
私にとっては、他のプログラムに簡単に組み込むことができる、ということになります。
公開フォルダがありますので…
動画サイトや掲示板の過去ログの共有システムを作る、というのも面白いかと。
P2Pで、バックストレージにSkyDriveを使うとか。

ま、とりあえず。
普通にファイルのアップ/ダウンはできるので、
よければ使ってみてください。

ありがとうございます

対応していただき、ありがとうございます。
まさか作者様から直接メッセージをいただけるとは思ってもおらず、非常に恐縮でございます。

このたびは、お礼の返信が遅れて申し訳ございません。
実はメッセージを拝見してすぐにダウンロードして使ってみたのですが、
再現性のないエラーの連発に悩まされておりまして、試行錯誤していたのですが、
振り返るとどうも、JPEGファイルでテストしていたせいな気がします。
思い立って同じ程度の容量のMP3ファイルで試してみますと、
同様のエラーはほとんど見ずに成功してしまいましたので。

通常?のWEBサイトからのアップロードの際には、画像の場合だけサイズを変更できたりしますので、
やはりSkyDriveでは画像ファイルは何か特別な扱いにでもなっているのでしょうか。

そしてやはり速度は凄く遅かったです。
最初の一発目こそ91KiB/sなんて数字を見ましたが、その後みるみる下がっていき、
すぐに4~7KiB/sしかでなくなりました。
ダウンロードは200KiBとかでていて、試した限りではあまり下がる気配もなかったんですが。
といってもダウンロードの方はあまり何回も試してはいないのですが。

> P2Pで、バックストレージにSkyDriveを使うとか。

これなんですけれど、実は自分は元々Windows Live SyncというMicrosoft製のP2Pファイル同期システムを、
バックアップ目的で使用するためにWindows Live IDを取ったんですが、
Microsoftがこれの同期先としてSkyDriveを選択できるようにしてくれるといいなあ、とずっと思ってました。
しかし自前で実装しようにも、このアップロード速度では厳しいような気もしますね。
もっともそれ以前に自分には実装する技術もないんですけれど。

それから、頻発したエラーメッセージというのは以下のようなもので、
数十KB程度のJPEGファイルだと出ないのですが、2~3MBぐらいのものになると出るようになります。
同じファイルでも出るときと出ないときがあって、出たときも何度かリトライしていると成功したりします。

----------------------------------------------------------------------------
System.Net.WebException: 基礎になる接続が閉じられました: 受信時に予期しないエラーが発生しました ---> System.IO.IOException: 転送接続にデータを書き込めません: 既存の接続はリモート ホストに強制的に切断されました。。 ---> System.Net.Sockets.SocketException: 既存の接続はリモート ホストに強制的に切断されました。
場所 System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
場所 System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
--- 内部例外スタック トレースの終わり ---
場所 System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
場所 System.Net.Security._SslStream.StartWriting(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
場所 System.Net.Security._SslStream.ProcessWrite(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
場所 System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
場所 System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size)
場所 System.Net.ConnectStream.InternalWrite(Boolean async, Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state)
場所 System.Net.ConnectStream.Write(Byte[] buffer, Int32 offset, Int32 size)
場所 Rei.Fs.CloseNotifyWriteStream.Write(Byte[] buffer, Int32 offset, Int32 count)
場所 CarotDAV.AsyncCopy.DavCopyWorker_Upload_UploadFile(DavCopyTask task)
--- 内部例外スタック トレースの終わり ---
場所 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
場所 Rei.Fs.Webdav.WebdavFs.GetResponse(HttpWebRequest request, Boolean notreqstream)
場所 Rei.Fs.Webdav.WebdavFs.RequestStreamClose(CloseNotifyWriteStream stream)
場所 Rei.Fs.CloseNotifyWriteStream.Close()
場所 System.IO.Stream.Dispose()
場所 CarotDAV.AsyncCopy.DavCopyWorker_Upload_UploadFile(DavCopyTask task)
----------------------------------------------------------------------------

そのときのログをみていると(関係ないかもしれませんが)、

----------------------------------------------------------------------------
AuthorizationMethod =
<HTTP/1.1 207 Multi-Status
< Pragma: no-cache
 ~省略~
< Content-Length: 528
< [MESSAGEBODY LENGTH:1178]
----------------------------------------------------------------------------

の部分の最後の二行の数値が、成功したときは「< Content-Length: 364 < [MESSAGEBODY LENGTH:364]」
のように一致しており、失敗するときは上のように(528!=1178)違っていました。
これとは別にタイムアウトのエラーも稀に出るのでデフォルト(10)から60に増やしています。
何か参考になりますでしょうか?

もうしばらくこのCarotDAVでSkyDriveをいろいろ試してみようと思います。
最後に重ねて、ありがとうございました。

申し訳ありません

今日また改めて試してみると、当初こそ同じ状況だったのですが、
何度もリトライを繰り返すうちに、突然転送速度が90KiB/s程度に跳ね上がり、
上記のエラーがほとんどでなくなりました。
代わりに各ファイル転送完了時に必ずタイムアウトエラーが出るようになったのですが、
これも何度もIgnoreを繰り返しながら続行していると、そのうちでないように…。

原因も解決法もはっきりしないまま、今は平均速度90KiB/s程度の、
比較的安定した(それでもごく稀にエラーは出ますが)転送ができています。

どうやらSkyDrive側の回線状況による、極めて特殊な環境下でのエラーだったようで、
上記返信のエラー報告の部分に関しては、無視していただきたく存じます。
お騒がせして申し訳ございません。

No title

> まさか(略

googleのリアルタイム検索を試していたらみつけたもので。
そんな恐縮なさらないでください。

> やはりSkyDriveでは画像ファイルは何か特別な扱いにでもなっているのでしょうか。

> それから、頻発したエラーメッセージというのは以下のようなもので、

報告ありがとうございます。
今日私のところはダメダメで、1Mのexeがどうしても上げられません。
拡張子をtxtにすると問題なし。

画像だけでなく、exeなども特別な扱いになっているようです。

件の「ファイル転送完了時に必ずタイムアウトエラー」もそれのひとつが原因だろうと思われます。

アップロードしてからなにか作業をしているようで、
(ウィルス検査やサムネール生成でしょうか?
その間にファイルのプロパティを更新しようとするととても時間がかかります。

CarotDAVはファイルをアップロードしてすぐに更新日時を変更しようとしますので、そこでタイムアウトになります。

> もうしばらくこのCarotDAVでSkyDriveをいろいろ試してみようと思います。

> 比較的安定した(それでもごく稀にエラーは出ますが)転送ができています。

いやー。
私が言うのもなんですが、これはダメだと思います。
CarotDAVのSkyDriveは使いものになりません。

拡張子で振る舞いが違ったり、画像ファイルが消せなかったり、ではストレージとして役にたちません。
普通にブラウザから使うほうがよっぽどいい。

言い訳をするなら、サーバーがひどすぎます…。
私の技量では対応するのはかなり厳しい。
多少遅くても、安定していれば使いようがあるのですが。

またここでも非スタンダード+不安定なWebDAV運用です。
WebDAVはいつもこうやって相性とか互換性の問題が大きくなって、結局「つかえねー」となるんですが…。

何がいけないのかなぁ。

手段が目的でしたので

> exeなども特別な扱いになっているようです。

そういえば実行可能ファイルに関してはダウンロードの際に
「PCにダメージを与える可能性が…」のようなメッセージを出すみたいですので、その関係なんでしょうか。

自分にとってSkyDriveは、「せっかくあるんだから何かに使わないともったいない…」で触り始めたもので、
元々目的がなかっただけに、別に使わなくとも困ることは何もないんですが、
理屈の上では使えそうなのに、微妙に穴があって難しい、というのはもどかしいですね。

しかし「CarotDAV & SkyDrive」の組み合わせでも、
挙動の傾向をつかみ、原理を考慮して適宜対処していけば使えなくはないとはいえ、
せっかく対応していただいたというのに、(多分)サーバ側の問題で万人にお勧めできる状態にはない、
というのは残念です。

SkyDrive ExplorerやGladinet Cloud Desktopは、
動作原理的には「出来のいいWebClientサービス」的なもののようで、
ローカルにキャッシュ分の容量が必要みたいですし、
Webサイト経由ですとフォルダ構造を保ったままのアップロードが困難だったりしますから、
CarotDAVのようなソフトが占める余地は十分にあると思うのですが…。
最新記事
最新コメント
Amazonおまかせリンク
カテゴリ
タグクラウド
Amazonお買い得ウィジェット
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
月別アーカイブ
プロフィール

電脳太助

Author:電脳太助
Website:電脳スピーチ web

RSSリンクの表示
メールフォーム

名前:
メール:
件名:
本文:

サイト内検索
Ads by Google
FC2アクセスランキング
Ads by Google
FC2拍手ランキング
ユーザータグ

音楽管理(66)
ポータブル(57)
ソフト紹介(44)
プログラミング(42)
音声技術(41)
自作ソフト(35)
サイト運営(32)
FC2(31)
ブログ(30)
iTunes(27)
Windows(25)
LISMO(24)
音声合成(23)
音声認識(22)
x-アプリ(22)
電子ブック(22)
eラーニング(20)
バックアップ(19)
語学学習(19)
foobar2000(18)
ソースコード(18)
WindowsLiveWriter(15)
画像管理(15)
C++(14)
アフィリエイト(10)
DnspTools(10)
fi-6130(9)
FLAC(9)
JavaScript(9)
ウォークマン(9)
英語音読学習計画(8)
Gracenote(8)
Prolog(8)
ベクター(8)
雑記(8)
CodeBlocks(7)
SyntaxHighlighter(7)
TraConv(7)
spcbght(7)
wxWidgets(7)
VirtualBox(6)
W63CA(6)
DCP-J552N(6)
WinRT(6)
WindowsLiveMesh(6)
iGoinLM(6)
英語発音矯正実験(6)
ExactAudioCopy(6)
MP3Gain(6)
LAME(5)
音楽技術(5)
Mery(5)
楽器演奏(5)
GalateaTalk(4)
nLite(4)
WindowsLiveSkyDrive(4)
ホームページ(4)
GalateaProject(4)
MIDI(4)
LLVM(4)
PC-98(3)
カウンター(3)
AACGain(3)
iTCDini(3)
OverCutChecker(3)
拍手(3)
PK-513L(3)
UniversalExtractor(3)
アクセスランキング(3)
ImageCompositeEditor(2)
アクセス解析(2)
OCR(2)
qtaacenc(2)
資格試験(1)
AquesTalk(1)
AquesCmdDl(1)

FC2アクセスランキング
最新トラックバック
アクセスランキング
[ジャンルランキング]
コンピュータ
105位
アクセスランキングを見る>>

[サブジャンルランキング]
ソフトウェア
8位
アクセスランキングを見る>>
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。