2013-02-26 66 views
3

我們正在開發一個Web應用程序,它將提供一些WebDAV功能並實現這些功能,我們正在評估.NET的IT-Hit服務器引擎組件。IT-Hit WebDAV服務器結帳模式以及與MS Office的交互

其目的是基於某些內部邏輯以讀寫或只讀模式爲用戶提供某個MS Office文檔;我們試圖通過Visual Studio中的WebDAV模板應用程序和在線文檔進行調查,但我們尚未找到實現此目的的具體方法。我們在哪裏可以找到更具體的參考?

此外,是否有可能知道用戶何時關閉了MS Office應用程序(即MS Word)並完成了他/她與文檔的交互?

回答

0

要使文件只讀,您可以在文件項目上實現IMsItem接口。你IMsItem.GetFileAttributes方法的實現必須返回只讀屬性的文件:

public FileAttributes GetFileAttributes() 
{ 
    ... 
    if(/*this file is read-only*/) 
    { 
     return fileSystemInfo.Attributes | FileAttributes.ReadOnly; 
    } 
    ... 
} 

請注意,此代碼實際上並不免受修改文件,則僅將此文件標記爲只讀。如果應用程序忽略只讀標誌,它可能會覆蓋該文件。爲了確保不會發生這種情況,在您的IFile.Write方法實現中,您必須驗證用戶是否有權修改該文件並且該文件不是隻讀的。如果文件是隻讀的 - 拋出異常。

Microsoft Office在關閉時打開和解鎖時鎖定文件。所以當文件關閉時,在服務器端調用ILock.Unlock()方法。請注意,如果連接丟失並且文件未被MS Office解鎖,則通常您會在鎖定過期後自動解鎖文件。

請同時閱讀關於how WebDAV locking works here

+0

感謝您的意見。我只是對只讀模式提出了另外一個問題:你說:「請注意,這段代碼實際上並不保護文件不被修改,它只會將文件標記爲只讀。如果應用程序忽略只讀標誌,它可能會覆蓋文件「。這是否意味着沒有機會使用「只讀」標籤將文件打開到客戶端MS Word中?通過IMsItem,我現在能夠在Windows資源管理器中看到「只讀」屬性,但Word將在沒有任何警告的情況下打開文件。 – 2013-03-04 11:43:46

+0

@MicheleNegri:你解決了嗎?我有與Excel相同的問題,Excel似乎沒有注意只讀標誌。根據回覆中的建議,我檢查了DavFile實施的IContent.Write方法中的條件。我也在考慮人工鎖定文件的想法... – costa 2013-06-04 23:42:30

+0

FileAttribute被完全忽略。無論如何Word會在編輯模式下打開。有沒有其他方法可以實現這一點? – greenhoorn 2017-06-22 07:36:06