Uma exceção de acesso não tratada ocorreu, msmq, erro Sharepoint
-
06-07-2019 - |
Pergunta
Eu tenho um problema que está ocorrendo depois que meus reinicialização do servidor. Eu tenho algumas características em SharePoint, para fazer várias coisas. Uma coisa que eles fazem é adicionar itens em um par de diferentes filas MSMQ. Imediatamente após a reinicialização do servidor, se eu tentar fazer login para SharePoint e eu ir para uma página personalizada da mina, e clicar em um botão dentro dessa página (que seria então criar o item msmq) eu me levado a uma página que exibe o seguinte:
O site se recusou a mostrar esta página web Este erro (HTTP 403 Forbidden) significa que o Internet Explorer foi capaz de se conectar ao site, mas não tem permissão para exibir a página da Web
Se eu cavar para o Evento Logs I encontrar os seguintes erros na aplicação:
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
Também, se eu cavar para os logs do SharePoint, I encontrar os seguintes erros:
Erro de aplicativo quando o acesso /my/site/url/MyPage.aspx, erro = Acesso é negado. (Exceção de HRESULT: 0x80070005 (E_ACCESSDENIED)) rastreamento de pilha do servidor: em System.Transactions.Oletx.IDtcProxyShimFactory.ConnectToProxy (String nodeName, Guid resourceManagerIdentifier, IntPtr managedIdentifier, Boolean & nodeNameMatches, UInt32 & whereaboutsSize, CoTaskMemHandle & whereaboutsBuffer, IResourceManagerShim & resourceManagerShim) em System.Transactions.Oletx.DtcTransactionManager.Initialize () a System.Transactions.Oletx.DtcTransactionManager.get_ProxyShimFactory () em System.Transactions.Oletx.OletxTransactionManager.CreateTransaction (TransactionOptions Propriedades) a System.Transactions.TransactionStatePromoted.EnterState (InternalTransaction tx) ...
... pelo System.Transactions.EnlistableStates.Promote (InternalTransaction TX): em System.Transactions.Transaction.Promote () a System.Transactions.TransactionInterop.ConvertToOletxTransaction (Transaction transação) em System.Transactions.TransactionInterop.GetDtcTransaction (Transaction transação) em System.ServiceModel.Channels.MsmqQueue.GetNativeTransaction (MsmqTransactionMode transactionMode) a System.ServiceModel.Channels.MsmqQueue.SendDtcTransacted (NativeMsmqMessage mensagem, MsmqTransactionMode transactionMode) em System.ServiceModel.Channels.MsmqQueue.Send (mensagem NativeMsmqMessage, MsmqTransactionMode transactionMode) a System.ServiceModel.MsmqIntegration.MsmqIntegrationOutputChannel.OnSend (Message mensagem, TimeSpan timeout) em System.ServiceModel.Chann ...
Eu tenho duas máquinas virtuais, um para a máquina web (sharepoint) e uma da máquina DB (onde todo o conteúdo dbs etc são armazenados). O servidor de DB é um controlador de domínio primário, e ambas as máquinas fazem parte do mesmo domínio. Eu criei um usuário de domínio a ser usado para o pool de aplicativos SharePoint.
Estranhamente, é possível fazer os erros vão embora, indo para uma parte diferente do meu aplicativo e executar esse código (que também adiciona uma entrada para o msmq). Uma vez feito isto, então todo o resto das obras aplicativo como normal.
Qualquer ajuda seria extremamente apreciada.
Nota: Notei que o erro tinha algo a ver com o usuário anônimo (IUSR ...) no IIS para o site do SharePoint. Mudei que usuário seja um usuário administrador de domínio, e o erro já não acontece. Então, é algo a ver com as permissões do IUSR .. user, mas eu não sei o que ...
Solução
O M G
Ok, então eu tentei algo, era um tiro longo, mas eu estava no meu juízo final.
Eu passei todo o código que estava falando com o MSMQ (adicionar itens para a fila) na corrida com elevada privelages thang, e funcionou !!!!
SPSecurity.RunWithElevatedPrivileges (delegado () { // MSMQCode aqui });
Agora, eu posso reiniciar o servidor, e fazer o material que foi erroring antes, e ele funciona muito bem!
Outras dicas
Considere executar quente scripts após a reinicialização do servidor.
permissão dar a todos leitura para o diretório bin sob inetpub \ wss etc ..