4

我目前正在使用 WebDAV 制作一个项目来制作某种文档管理系统。它是一个托管在 IIS 中的 ASP .NET Web 应用程序。(虽然不是使用IIS WebDAV,而是对这个项目的修改:http: //mvc4webdav.codeplex.com/

在过去的几个月里,它工作正常,但几天前,Excel 和 PowerPoint 出现了错误。

我使用的是FFWinplugin 或 Sharepoint ActiveXObject(OpenDocument 控件),具体取决于浏览器。

当用户点击文档链接时,会触发这个函数:

function editDocument(event, path) {
    event.preventDefault();
    if (fNewDoc) {
        if (!EditDocumentButton.EditDocument(path)) {
            alert(L_EditDocumentRuntimeError_Text);
        }
    } else {
        try {
            //************************ This part works for word but not excel or power point
            //var ffWinPlugin = document.getElementById("winFirefoxPlugin");
            //var ov = ffWinPlugin.GetOfficeVersion();
            // ffWinPlugin.EditDocument(path, ov);
            //*********************************
            window.location.replace('ms-powerpoint:ofe|u|' + path); //But this works for excel and powerpoint 
        } catch (e) {
            alert(L_EditDocumentError_Text);
        }
    }
}

fNewDoc是我在页面加载时设置的一个标志,用于确定 OpenDocument 控件是否已在 IE 中初始化。

路径类似于:

http://localhost/appName/EditDocument/cb72e81f-fb9c-40af-962b-aa981b79bb72/Test.pptx

问题是这样的:

当我尝试通过调用上述EditDocument函数、使用 FFWinPlugin 或 OpenDocument 打开 Excel/PowerPoint 文件时,无法正确打开它进行编辑。两者都只是打开而没有受保护的视图,但无法编辑。

  1. 在 Excel 中,它不显示只读模式,但是当我尝试保存时,它显示文档未保存。
  2. 在 PowerPoint 中,它以只读模式打开。

我调试查看发出的 WebDAV 请求,结果发现它们都只在第一个 OPTIONS 之后一遍又一遍地请求 PROPFIND。

如果我使用window.location.replace(.....)3 个应用程序(Word、Excel、PP),则可以在受保护的视图中正常打开文档,并且可以进行编辑。此外,它遵循通常的 WebDAV 请求周期(OPTIONS-HEAD-OPTIONS-LOCK-GET-PROPFIND-UNLOCK)。如果我启用编辑,它工作得很好。

我首先在 Office 2013 (365) 上测试了该应用程序,为了向后兼容,我安装了 Office 2010(我在网上查了一下,后来我知道将它们并排放置是个坏主意)。而这整个问题发生在我不久前卸载 2010 版本之后。

我在另一台电脑上测试过,没有出现这个问题。也在在线 WebDAV 演示中进行了测试,也没有出现问题。所以看来问题只发生在 Excel/PowerPoint 和 localhost 之间。

我本可以使用工作方法来解决这个问题,但它会变得不灵活,因为我必须有很多 if-else 语句来确定要使用哪个 ms office 应用程序。而如果我使用 FFWinPlugin,我就不必照顾它了。所以我很想知道是怎么回事,但是上网查了一会儿,什么都没有。

我怎样才能解决这个问题?一开始以为是卸载2010后Office 2013安装损坏了,但是不使用FFWinplugin的时候就可以了。所以,现在我不确定出了什么问题。

4

0 回答 0