1

我们正在使用“IT Hit WebDAV AJAX Library Redistribution License”库。

我们已经成功地将此库用于此工作流程:1)客户端单击网页上的按钮 2)网页在 webdav 服务器上找到文档 3)插件将 webdav 文档与客户端的 Ms Office Word 连接。4) 客户端更新文档的内容 5) 客户端保存他的更改。此更改会反映并存储在 webdav 存储中。

我们的问题是:我们需要在这个工作流中添加以下任务:

6) 客户端关闭 Ms Office Word 应用程序 7) 通知网页客户端已关闭 webdav 文档 8) 网页使用该信息执行某些操作....

我们不知道如何从您的库中获取回调,以触发我们逻辑所需的许多任务。

我们正在使用此代码打开文档:

function editWordVersion(document_url){
    oNs= ITHit.WebDAV.Client.DocManager;
    oNs.EditDocument(document_url);
}

我们感谢您使用图书馆执行此操作的任何方式或替代方法。

4

1 回答 1

1

无法直接从 MS Office 应用程序获取有关正在关闭的文档的信息到 IT Hit WebDAV Ajax 库。打开文档后,WebDAV Ajax 库对文档没有任何控制权,它只是启动打开文档的过程。

要获得有关文档被关闭的通知,您需要使用 websockets 并从您的ILock向网页发送通知。解锁方法实现。以下是如何使用 WebDAV 将 SigmalR 添加到 MVC 5 项目,发送和使用通知:

  1. 在 VS 2013 中创建 MVC 5 ASP.NET Web 应用程序。

  2. 使用“添加 WebDAV 服务器实现”向导将 WebDAV添加到您的项目中。

  3. 在服务器站点上将 Web 套接字添加到您的项目:

    在项目中添加对 Microsoft.AspNet.SignalR.Core 和 Microsoft.AspNet.SignalR.SystemWeb 的引用。

    在 Startup.cs 中调用 app.MapSignalR():

    public void Configuration(IAppBuilder app) {
    
        app.MapSignalR();
    
        ConfigureAuth(app);
    }
    

    创建从 Hub 派生的类。您可以将其留空:

    public class MyHub1 : Hub
    {
    }
    
  4. 在 ILock.Unlock 方法实现中向网页发送通知。默认情况下,添加 WebDAV 服务器实现向导将 Unlock 方法添加到实现 ILock 的 DavHierarchyItem 类中,使用以下代码扩展此方法:

     public void Unlock(string lockToken)
    {
        // your unlock implementation goes here
        ...
    
        // get the document url (optional)
        string documentUrl = System.Web.HttpContext.Current.Response.ApplyAppPathModifier(
            context.Request.ApplicationPath.TrimEnd('/') + '/' + this.Path);
    
        // send SignalR message to all web browsers
        var signalCntx = Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<MyHub1>();
        signalCntx.Clients.All.documentModified(context.Request.HttpMethod, documentUrl);
    }
    
  5. 在客户端消费事件。将以下 JavaScript 添加到您的网页,例如 WebDAV 向导生成的 MyCustomHandlerPage.aspx 页面:

    <script src="/Scripts/jquery-1.10.2.js"></script>
    <script src="/Scripts/jquery.signalR-2.1.2.min.js"></script>
    
    <!--Reference the autogenerated SignalR hub script. -->
    <script src="/signalr/hubs"></script>
    
    <!--SignalR script to update the chat page and send messages.--> 
    <script>
    $(function () {
        // Reference the auto-generated proxy for the hub.  
        var chat = $.connection.myHub1;
    
        // This function is called when the document is unlocked.
        chat.client.documentModified = function (httpMethod, docPath) {
            window.location.reload(); 
        };
    
        // Start the connection.
        $.connection.hub.start().done(function () {
    
        });
    });
    </script>
    
于 2015-03-03T21:33:58.727 回答