1

tl;dr

Word を適切に操作するには、 Microsoft WebDav 拡張プロパティを実装する必要がありますか。

拡張質問

既存のWebDAV.NET オープン ソース プロジェクトの上に WebDav サーバーを構築しています。Word 2010 (他のバージョンは試していません) では、ドキュメントが正しく保存され、ファイルの唯一のユーザーであるにもかかわらず、「アップロードに失敗しました」と表示されるため、サンプル コードが Microsoft Word ドキュメントの保存を正しく処理しないことに気付きました。その理由を突き止めようとしていますが、私の目を引いたのはMicrosoft WebDav Extension Propertiesでした。これに関する MS ページには、「WebDAV プロトコルを実装する WebDAV サーバー: Microsoft 拡張機能、次の拡張プロパティを実装する必要があります」と記載されています。すべきと述べているので、Word で動作するためにサポートする必要はないと思います。

私の propfind 要求/応答が次のようになっていることに気づいたとき、私は拡張機能を疑うようになりました。

PROPFIND /test123.docx HTTP/1.1
Cache-Control: no-cache
Connection: Keep-Alive
Pragma: no-cache
Content-Type: text/xml; charset="utf-8"
User-Agent: Microsoft Office Core Storage Infrastructure/1.0
Depth: 0
Translate: f
Connection: Keep-Alive
Content-Length: 208
Host: localhost:62954

<?xml version="1.0" encoding="utf-8" ?><D:propfind xmlns:D="DAV:" xmlns:Office="urn:schemas-microsoft-com:office:office"><D:prop><D:creationdate/><D:getlastmodified/><Office:modifiedby/></D:prop></D:propfind>

HTTP/1.1 207 Multi-Status
Server: ASP.NET Development Server/10.0.0.0
Date: Mon, 16 Apr 2012 14:11:55 GMT
X-AspNet-Version: 4.0.30319
MS-Author-Via: DAV
Cache-Control: private
Content-Type: text/xml; charset=utf-8
Content-Length: 576
Connection: Close

<?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:">
    <D:response>
        <D:href>http://localhost:62954/test123.docx</D:href>
        <D:propstat>
            <D:prop>
                <D:creationdate>2012-04-10T08:00:00Z</D:creationdate>
                <D:getlastmodified>2012-04-16T09:09:44Z</D:getlastmodified>
            </D:prop>
            <D:status>HTTP/1.1 200 OK</D:status>
        </D:propstat>
        <D:propstat>
            <D:status>HTTP/1.1 404 Not Found</D:status>
            <D:prop>
                <modifiedby xmlns="urn:schemas-microsoft-com:office:office" />
            </D:prop>
        </D:propstat>
    </D:response>
</D:multistatus>

興味のある方のために、以下は私の PUT 応答です。

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Mon, 16 Apr 2012 14:18:06 GMT
X-AspNet-Version: 4.0.30319
MS-Author-Via: DAV
Cache-Control: private
Content-Length: 0
Connection: Close
4

2 に答える 2

2

By the way, I found the bug in Sphorium webdav that was causing this. The bug was in the method DavLockBase_InternalProcessDavRequest() and the incorrect line of code was:

string[] _lockTokens = this.RequestLock.GetLockTokens();

which should be:

string[] _lockTokens = this.ResponseLock.GetLockTokens();
于 2012-09-17T19:15:18.000 に答える
1

いいえ、 MicrosoftWebDAV拡張プロパティを実装する必要はありません。 (私は自分の質問に対する答えを見つけました)

WebDAV.NETの問題は、ヘッダーに空のLockTokenがあり、Wordを混乱させ、PUT要求にLockTokenを与えないというバグがあることです。

于 2012-04-16T18:56:50.930 に答える