Произошло исключение необработанного доступа, msmq, ошибка Sharepoint - PullRequest
0 голосов
/ 27 октября 2009

У меня есть проблема, которая возникает после перезагрузки моего сервера. У меня есть некоторые функции в SharePoint, для выполнения различных задач. Одна вещь, которую они делают, это добавляет элементы в пару разных очередей MSMQ. Сразу после перезагрузки сервера, если я пытаюсь войти в SharePoint и захожу на свою собственную страницу и нажимаю кнопку на этой странице (которая затем создаст элемент msmq), я попадаю на страницу, которая отображает следующее:

Сайт отказался показывать эту страницу Эта ошибка (HTTP 403 Forbidden) означает, что 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)) Трассировка стека сервера: в System.Transactions.Oletx.IDtcProxyShimFactory.ConnectToProxy (String имя узла, Guid resourceManagerIdentifier, IntPtr managedIdentifier, Boolean & nodeNameMatches, UInt32 и местонахождениеSize, CoTaskMemHandle & whereaboutsBuffer, IResourceManagerShim & resourceManagerShim) в System.Transactions.Oletx.DtcTransactionManager.Initialize () в System.Transactions.Oletx.DtcTransactionManager.get_ProxyShimFactory () в System.Transactions.Oletx.OletxTransactionManager.CreateTransaction (TransactionOptions свойства) в System.Transactions.TransactionStatePromoted.EnterState (InternalTransaction tx) ...
... at System.Transactions.EnlistableStates.Promote (InternalTransaction tx)
в System.Transactions.Transaction.Promote () в System.Transactions.TransactionInterop.ConvertToOletxTransaction (Transaction транзакция) в System.Transactions.TransactionInterop.GetDtcTransaction (Transaction транзакция) в System.ServiceModel.Channels.MsmqQueue.GetNativeTransaction (MsmqTransactionMode транзакция) в System.ServiceModel.Channels.MsmqQueue.SendDtcTransacted (NativeMsmqMessage сообщение MsmqTransactionMode TransactionsMode) в System.ServiceModel.Channels.MsmqQueue.Send (сообщение NativeMsmqMessage, MsmqTransactionMode TransactionsMode) в System.ServiceModel.MsmqIntegration.MsmqIntegrationOutputChannel.OnSend (Message сообщение, время ожидания TimeSpan) в System.ServiceModel.Chann ...

У меня есть две виртуальные машины: одна для веб-компьютера (sharepoint) и одна для компьютера БД (где хранятся все базы данных контента и т. Д.). Сервер БД является основным контроллером домена, и обе машины являются частью одного домена. Я создал пользователя домена для использования в пуле приложений SharePoint.

Странно, но можно устранить ошибки, перейдя в другую часть моего приложения и запустив этот код (который также добавляет запись в msmq). Как только это будет сделано, все остальное приложение будет работать в обычном режиме.

Любая помощь будет очень полезна.

Примечание. Я заметил, что ошибка связана с анонимным пользователем (IUSR ...) в IIS для сайта SharePoint. Я изменил этого пользователя на администратора домена, и ошибка больше не возникает. Так что это как-то связано с разрешениями пользователя IUSR .. но я не знаю что ...

Ответы [ 3 ]

1 голос
/ 29 октября 2009

М М

Хорошо, я попробовал кое-что, это был ДЛИННЫЙ выстрел, но я был в конце.

Я обернул весь код, который говорил с MSMQ (добавление элементов в очередь) в ходе выполнения с повышенными привилегиями, и это сработало !!!!

SPSecurity.RunWithElevatedPrivileges (делегат () { // MSMQCode здесь });

Теперь я могу перезагрузить сервер и выполнить то, что раньше было ошибкой, и все работает отлично!

0 голосов
/ 03 декабря 2009

Дайте всем разрешение на чтение в каталог bin в папке inetpub \ wss и т.д ..

0 голосов
/ 28 октября 2009

Рассмотрите возможность запуска сценариев прогрева при перезагрузке сервера.

http://blogs.msdn.com/joelo/archive/2006/08/13/697044.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...