Возникло исключение необработанного доступа, ошибка msmq, Sharepoint

StackOverflow https://stackoverflow.com/questions/1632225

Вопрос

У меня проблема, которая возникает после перезагрузки моего сервера.У меня есть некоторые функции в 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 и т. д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top