Возникло исключение необработанного доступа, ошибка msmq, Sharepoint
-
06-07-2019 - |
Вопрос
У меня проблема, которая возникает после перезагрузки моего сервера.У меня есть некоторые функции в SharePoint для выполнения различных задач.Одна вещь, которую они делают, - это добавляют элементы в пару разных очередей MSMQ.Сразу после перезагрузки сервера, если я попытаюсь войти в SharePoint и перейду на свою пользовательскую страницу и нажму на кнопку на этой странице (которая затем создаст элемент msmq) Я попадаю на страницу, на которой отображается следующее:
Веб-сайт отказался показывать эту веб-страницу Эта ошибка (HTTP 403 запрещен) означает, что Internet Explorer смог подключиться к веб-сайту, но у него нет разрешения на просмотр веб-страницы
Если я покопаюсь в журналах событий, я обнаружу следующие ошибки в приложении:
Event ID: 1314
An unhandled access exception has occurred
AND in the Security event logs:
3 of these:
Event ID: 560
Object Open:
Object Server: SC Manager
Object Type: SERVICE OBJECT
Object Name: MSDTC
....
Accesses: Query status of service
Event ID: 560
Object Open:
Object Server: SC Manager
Object Type: SC_MANAGER OBJECT
Object Name: ServicesActive
...
Image File Name: C:\WINDOWS\system32\services.exe
...
Accesses: Connect to service controller
Query service database lock state
Event ID: 560
Object Open:
Object Server: SC Manager
Object Type: SERVICE OBJECT
Object Name: MSDTC
...
Image File Name: C:\WINDOWS\system32\services.exe
...
Accesses: Query service configuration information
КРОМЕ того, если я покопаюсь в журналах SharePoint, я обнаружу следующие ошибки:
Ошибка приложения при доступе к /my/site/url/MyPage.aspx Ошибка= Доступ запрещен.(Исключение из HRESULT:0x80070005 (E_ACCESSDENIED)) Трассировка стека сервера:в Системе.Транзакциях.Oletx.IDtcProxyShimFactory.ConnectToProxy(Строка Имя узла, идентификатор Guid resourceManagerIdentifier, идентификатор IntPtr managedIdentifier, Логические значения и nodenamemematches, UInt32 и Whereaboutsize, CoTaskMemHandle& whereaboutsBuffer, IResourceManagerShimи resourceManagerShim) в Системе.Транзакции.Oletx.DtcTransactionManager.Инициализировать () в Системе.Транзакции.Oletx.DtcTransactionManager.get_ProxyShimFactory() в Системе.Транзакции.Oletx.OletxTransactionManager.Создайте транзакцию (TransactionOptions свойства) в System.Transactions.TransactionStatePromoted.EnterState(InternalTransaction техас) ...
...в системе.Транзакции.Привлекаемые состояния.Продвижение (InternalTransaction tx)
в системе.Транзакции.Транзакция.Promote() в Системе.Транзакции.TransactionInterop.ConvertToOletxTransaction(транзакция транзакция) в Системе.Транзакции.TransactionInterop.GetDtcTransaction(транзакция транзакция) в System.ServiceModel.Каналы.Запрос MSMQ.GetNativeTransaction(MsmqTransactionMode transactionMode) в System.ServiceModel.Каналы.Запрос MSMQ.Отправитьdtctransacted(NativeMsmqMessage сообщение, MsmqTransactionMode transactionMode транзакции) в System.ServiceModel.Каналы.MsmqQueue.Отправить (сообщение NativeMsmqMessage, MsmqTransactionMode transactionMode) в Систему.ServiceModel.Интеграция MSMQ.Выходной канал MSMQINTEGRATIONOUT.Отправка (сообщение сообщение, тайм-аут) в системе.ServiceModel.Чанн...
У меня есть две виртуальные машины, одна для веб-компьютера (sharepoint) и одна для компьютера с базой данных (где хранятся все базы данных контента и т.д.).Сервер базы данных является основным контроллером домена, и обе машины являются частью одного домена.Я создал пользователя домена для использования в пуле приложений SharePoint.
Как ни странно, можно устранить ошибки, перейдя в другую часть моего приложения и запустив этот код (который также добавляет запись в msmq).Как только это будет сделано, вся остальная часть приложения будет работать в обычном режиме.
Любая помощь была бы невероятно признательна.
Примечание:Я заметил, что ошибка была как-то связана с анонимным пользователем (IUSR ...) в IIS для сайта SharePoint.Я изменил этого пользователя на администратора домена, и ошибка больше не возникает.Итак, это как-то связано с разрешениями IUSR..пользователь, но я не знаю, что именно...
Решение
O M G
Ладно, я кое-что попробовал, это был РИСКОВАННЫЙ шаг, но я был на пределе своих возможностей.
Я завернул весь код, который взаимодействовал с MSMQ (добавляя элементы в очередь) при запуске с повышенными привилегиями, и это сработало!!!!
SPSecurity.RunWithElevatedPrivileges(делегировать() { //MSMQCode здесь });
Теперь я могу перезагрузить сервер и сделать то, что раньше приводило к ошибкам, и это работает нормально!
Другие советы
Рассмотрите возможность запуска сценариев прогрева после перезагрузки сервера.
http://blogs.msdn.com/joelo /archive/2006/08/13/697044.aspx р>
Дайте всем разрешение на чтение в каталог bin в папке inetpub \ wss и т. д.