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

У меня проблема, которая возникает после перезагрузки моего сервера. У меня есть некоторые функции в 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 nodeName, Guid resourceManagerIdentifier, IntPtr manageIdentifier, Boolean& nodeNameMatches, UInt32&whereaboutsSize, CoTaskMemHandle&whereaboutsBuffer, IResourceManagerShim) в System.TransactionManagerShim) .Oletx.DtcTransactionManager.Initialize() в System.Transactions.Oletx.DtcTransactionManager.get_ProxyShimFactory() в System.Transactions.Oletx.OletxTransactionManager.CreateTransaction(свойства TransactionOptions) в System.Transactions.TransactionStatePromoted.EnterState(InternalTransaction tx) ...< br> ...в System.Transactions.EnlistableStates.Promote(InternalTransaction tx)
в System.Transactions.Transaction.Promote() в System.Transactions.TransactionInterop.ConvertToOletxTransaction(транзакция транзакции) в System.Transactions.TransactionIntero p.GetDtcTransaction(транзакция транзакции) в System.ServiceModel.Channels.MsmqQueue.GetNativeTransaction(MsmqTransactionMode transactionMode) в System.ServiceModel.Channels.MsmqQueue.SendDtcTransacted(сообщение NativeMsmqMessage, MsmqTransactionMode transactionMode) в System.ServiceModel.Channels.MsmqQueueMend(Native сообщение, MsmqTransactionMode transactionMode) в System.ServiceModel.MsmqIntegration.MsmqIntegrationOutputChannel.OnSend(сообщение сообщения, время ожидания TimeSpan) в System.ServiceModel.Chann...

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

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

Любая помощь будет невероятно оценена.

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


person zikoziko    schedule 27.10.2009    source источник
comment
Примечание. Это происходит только сразу после перезагрузки. Если я войду в систему, я могу воспроизвести эту ошибку. Однако, если я нажму на конкретную часть функций в своем приложении, все снова начнет работать (хотя это снова работает, только если я выполняю определенное действие).   -  person zikoziko    schedule 28.10.2009


Ответы (3)


O M G

Хорошо, поэтому я попробовал кое-что, это был ДОЛГИЙ выстрел, но я был в своем уме.

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

SPSecurity.RunWithElevatedPrivileges(delegate() { // MSMQCode здесь });

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

person zikoziko    schedule 29.10.2009

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

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

person UJ.    schedule 28.10.2009
comment
Спасибо, я посмотрю на это, чтобы увидеть, если это имеет значение. - person zikoziko; 29.10.2009

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

person wefwfwefwe    schedule 03.12.2009