У меня есть надстройка Word VSTO, которая сохраняет документ в защищенном сетевом ресурсе. Процесс сохранения выполняется посредством олицетворения учетной записи Active Directory, которая имеет доступ к защищенному общему ресурсу. Часть этого - копирование документа в общий сетевой ресурс и удаление настроек (другие части включают обновление базы данных - не имеет отношения к рассматриваемой проблеме).
SwitchIdentity()
File.Copy(localPath, remotePath, True)
If ServerDocument.IsCustomized(remotePath) Then
ServerDocument.RemoveCustomization(remotePath)
End If
SwitchBackIdentity()
Методы класса ServerDocument выдают исключения (даже пытаясь только .RemoveCustomization не работает с документом, который имеет настройку).
Исключения:
The type initializer for 'MS.Utility.EventTrace' threw an exception.. Source: WindowsBase. StackTrace:
at MS.Utility.EventTrace.EasyTraceEvent(Keyword keywords, Event eventID)
at System.IO.Packaging.Package.Open(Stream stream, FileMode packageMode, FileAccess packageAccess, Boolean streaming)
at System.IO.Packaging.Package.Open(Stream stream, FileMode packageMode, FileAccess packageAccess)
at Microsoft.Office.Tools.OfficeOpenXmlAppInfoDocument.Microsoft.VisualStudio.Tools.Applications.Runtime.IAppInfoDocument.SetDocument(String fileName, Byte[] data, FileAccess fileAccess)
at Microsoft.VisualStudio.Tools.Applications.AppInfoDocumentFactory.GetAppInfoDocument(String documentPath, Byte[] bytes, FileAccess access)
at Microsoft.VisualStudio.Tools.Applications.ServerDocument.Initialize(Byte[] bytes, String documentPathOrFileType, FileAccess access, Boolean throwOnPreviousVersion)
at Microsoft.VisualStudio.Tools.Applications.ServerDocument.Initialize(Byte[] bytes, String documentPathOrFileType, FileAccess access)
at Microsoft.VisualStudio.Tools.Applications.ServerDocument..ctor(String documentPath, FileAccess access)
at Microsoft.VisualStudio.Tools.Applications.ServerDocument.IsCustomized(String documentPath)
at DMS.ActiveDocument.SaveActiveDocument(). InnerException Message: Requested registry access is not allowed.. InnerException Source: mscorlib
и другое исключение:
Failed to save remotely (ID=123).
The type initializer for 'MS.Utility.EventTrace' threw an exception..
Source: ADDINNAME. StackTrace: at ADDINNAME.CLASSNAME.METHODNAME()
Это происходит последовательно.
Это происходит в Windows 10 Office 2016 или Windows 7 Office 2007. Сама надстройка изначально была разработана с VS 2008 VSTO 3 для Windows 7 Office 2007 и была перенесена с VS 2017 для использования VSTO 4 (автоматизированный процесс).
Кажется, что раздел реестра «Warmpup» работает нормально, пока выдается ошибка (надстройка загружается правильно все время). Мы исследовали, было ли это связано с проблемой DNS, но, похоже, это происходит на ПК с конфликтами в IP-адресах или без них. Мы также безуспешно пытались переустановить VSTO 4 на зараженных компьютерах.
Кажется, что проблема возникает внезапно и может исчезнуть через несколько дней.
Любая помощь приветствуется. Также обратите внимание, что у нас есть маленький пользователь из расчета около 1000 в день, использующий приложение - это случается только с несколькими пользователями время от времени.