I have made changes to the Windows Registry to facilitate opening Word
Documents Read/Write directly from a link within IE in a separate instance
of Word.  Information on the specific registry setting is here.
http://support.microsoft.com/?kbid=867838
<http://support.microsoft.com/?kbid=867838> 

I have been able to successfully test this behavior using the default File
Content Store that comes with Slide 2.0.  Clicking on a link like
http://host/slide/files/Document.doc <http://host/slide/files/Document.doc>
and watching the TCP traffic, I see IE make a GET request to Slide which
returns the content of the file.  The file is opening in Word because of the
contentType header "application/word".  Then I see Word make a LOCK request
to Slide which returns a 200 OK response, then Word makes a GET request that
returns a 304 NOT MODIFIED.  Then Word opens the file Read/Write

IE - GET
Word - LOCK
Word - GET

However, when I try this with my own content store connected to my existing
Content Management application, Word opens the document Read-Only.  The
first GET from IE and the first LOCK request from Word are exactly the same
as described above - including the 200 OK response to the LOCK request.
However, right after the LOCK, Word issues an UNLOCK request, before making
the final GET.  The file opens, but is Read-Only, because of the UNLOCK I'm
sure.

IE - GET
Word - LOCK
Word - UNLOCK
Word - GET

I cannot understand what makes Word issues the UNLOCK when using my content
store versus the default Slide File store.

Here is the XML response to the LOCK request, which is the same in both
cases, save the value of the opaquelocktoken
====================
<?xml version="1.0" encoding="UTF-8"?>

<D:prop xmlns:D="DAV:">
        <D:lockdiscovery>
                <D:activelock>
                        <D:locktype>
                                <D:write />
                        </D:locktype>                                   
                        <D:lockscope>
                                <D:exclusive />
                        </D:lockscope>
                        <D:depth>0</D:depth>
                        <D:owner><![CDATA[fallij]]></D:owner>
                        <D:timeout>Second-179</D:timeout>
                        <D:locktoken>
        
<D:href>opaquelocktoken:5db646da4738896d5318dcb754ce331f</D:href>
                        </D:locktoken>
                        <D:principal-URL>
        
<D:href>/slide/users/unauthenticated</D:href>
                        </D:principal-URL>
                </D:activelock>
        </D:lockdiscovery>
</D:prop>
======================

The are only two difference between the two sets of requests (as far as I
can tell).
1.  The LOCK request from WORD to my content store includes an additional
request header
"Authorization: Negotiate YIILgQYGKwYBBQUCoIILd......eQI5Rn8V3YJkS"
2.  The URI path for the file in my content store does not include the
".doc" file extension.  The URL looks like http://host/slide/12345
<http://host/slide/12345>  where "12345" is a document id within my existing
Content Store.  The ID from the URI is simply used to return the correct
information about the file when retrieveRevisionDescriptor and
retrieveRevisionContent methods are called.

Thanks

Jonathan

Reply via email to