簡體   English   中英

如何同時由多個用戶更新.xsl文件?

[英]How to update .xsl file by multiple users at the same time?

我正在開發一個應用程序,其中多個用戶在處理過程中會更新xsl。此文件位於部署了Web應用程序的服務器上的文件夾中。

以下代碼用於更新xsl文件。

XmlDocument doc = new XmlDocument();
doc.Load(ConfigurationManager.AppSettings["XSLPdfDimensions"]);
XmlNode root = doc.DocumentElement;
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("xsl", "http://www.w3.org/1999/XSL/Transform");

root.SelectSingleNode(marginTop, nsmgr).Attributes["select"].Value = Convert.ToString(top);
root.SelectSingleNode(marginBottom, nsmgr).Attributes["select"].Value = Convert.ToString(bottom);

doc.Save(ConfigurationManager.AppSettings["XSLPdfDimensions"]);

當用戶同時訪問此文件時,發生以下異常

"The process cannot access the file 'C:\XSL\Dimensions.xsl'because it is being used by another process"

如何以最小的功能延遲解決此問題,或者有其他替代方法來更新xsl文件?

還是有一些替代方法來更新xsl文件?

為什么不通過代碼將marginTop和marginBottom作為參數傳遞。 這樣,您就可以擁有一個XSL,無需進行任何修改,所有用戶都可以得到他們想要的東西。

或修改XML以傳遞這些值,然后重寫XSL以使用XML中的那些值。 在設計良好的系統中,用戶無需修改XSL。 XML或傳遞給轉換的參數都可以處理該變量信息。

由於我看到您正在嘗試傳遞PDF尺寸,因此您應該在http://www.cloudformatter.com/CSS2Pdf.APIDoc.Usage查看代碼。 如果您查看該代碼,則可以找到該轉換背后的XSL。 所有適當的頁面尺寸-頁面大小,所有頁邊距以及很多很多東西都已從XML傳遞到該XSL(派生自HTML div和/或在Javascript中指定,並附加到發送給XSL的XML上) )。

無需任何人來編輯XSL即可獲得各種內容-頁面大小,邊距,背景圖像,頁面邊框,頁面背景顏色等。

我猜您將在兩個或多個用戶嘗試調用doc.Save方法時看到此錯誤。 當一個用戶開始寫入文件時,操作系統將其鎖定,以防止其他用戶同時更改。 您可能需要在內部使用它-它們將確保只有一個線程會在同一時間嘗試對其進行寫入。

另一種選擇是重新設計應用程序,以避免同時寫入文件系統-正是由於並發性問題,這是一項冒險的業務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM