Domanda

Ho un problema che si verifica dopo il riavvio del mio server. Ho alcune funzionalità in SharePoint, per fare varie cose. Una cosa che fanno è aggiungere elementi in un paio di diverse code MSMQ. Immediatamente dopo il riavvio del server, se provo ad accedere a SharePoint e vado in una mia pagina personalizzata e faccio clic su un pulsante all'interno di quella pagina (che quindi creerebbe l'elemento msmq) vengo portato a una pagina che visualizza il seguenti:

Il sito Web ha rifiutato di mostrare questa pagina Web Questo errore (HTTP 403 proibito) indica che Internet Explorer è stato in grado di connettersi al sito Web, ma non dispone dell'autorizzazione per visualizzare la pagina Web

Se riesco ad accedere ai registri eventi, trovo i seguenti errori nell'applicazione:

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 

ANCHE, se inserisco i log di SharePoint, trovo i seguenti errori:

  

Errore dell'applicazione quando si accede a /my/site/url/MyPage.aspx, Errore = Accesso   è negato. (Eccezione da HRESULT: 0x80070005 (E_ACCESSDENIED))   Traccia stack server: at   System.Transactions.Oletx.IDtcProxyShimFactory.ConnectToProxy (String   nodeName, Guid resourceManagerIdentifier, IntPtr managedIdentifier,   Booleano & amp; nodeNameMatches, UInt32 & amp; WhereeaboutsSize, CoTaskMemHandle & amp;   whereBboutsBuffer, IResourceManagerShim & amp; resourceManagerShim) a   System.Transactions.Oletx.DtcTransactionManager.Initialize () a   System.Transactions.Oletx.DtcTransactionManager.get_ProxyShimFactory ()   a   System.Transactions.Oletx.OletxTransactionManager.CreateTransaction (TransactionOptions   proprietà) a   System.Transactions.TransactionStatePromoted.EnterState (InternalTransaction   tx) ...
      ... su System.Transactions.EnlistableStates.Promote (InternalTransaction tx)
  at System.Transactions.Transaction.Promote () a   System.Transactions.TransactionInterop.ConvertToOletxTransaction (Transaction   transazione) a   System.Transactions.TransactionInterop.GetDtcTransaction (Transaction   transazione) a   System.ServiceModel.Channels.MsmqQueue.GetNativeTransaction (MsmqTransactionMode   transactionMode) a   System.ServiceModel.Channels.MsmqQueue.SendDtcTransacted (NativeMsmqMessage   messaggio, MsmqTransactionMode transactionMode) a   System.ServiceModel.Channels.MsmqQueue.Send (messaggio NativeMsmqMessage,   MsmqTransactionMode transactionMode) a   System.ServiceModel.MsmqIntegration.MsmqIntegrationOutputChannel.OnSend (Messaggio   messaggio, timeout TimeSpan) su System.ServiceModel.Chann ...

Ho due VM, una per la macchina web (sharepoint) e una della macchina DB (dove sono archiviati tutti i contenuti dbs ecc.). Il server DB è un controller di dominio primario ed entrambe le macchine fanno parte dello stesso dominio. Ho creato un utente di dominio da utilizzare per il pool di applicazioni di SharePoint.

Stranamente, è possibile far sparire gli errori andando in una parte diversa della mia applicazione ed eseguendo quel codice (che aggiunge anche una voce nel msmq). Fatto ciò, tutto il resto dell'applicazione funziona normalmente.

Qualsiasi aiuto sarebbe incredibilmente apprezzato.

Nota: ho notato che l'errore aveva a che fare con l'utente anonimo (IUSR ...) in IIS per il sito di SharePoint. Ho modificato l'utente in modo che diventi un amministratore del dominio e l'errore non si verifica più. Quindi, ha a che fare con le autorizzazioni dell'utente IUSR .., ma non so cosa ...

È stato utile?

Soluzione

O M G

Ok, quindi ho provato qualcosa, è stato un LUNGO colpo, ma ero al mio ingegno.

Ho eseguito il wrapping di tutto il codice che stava parlando con MSMQ (aggiungendo elementi alla coda) in esecuzione con privilegi elevati grazie, e ha funzionato !!!!

SPSecurity.RunWithElevatedPrivileges (delegato () { // MSMQCode qui });

Ora posso riavviare il server e fare le cose che in precedenza erano errate e funziona bene!

Altri suggerimenti

Prendi in considerazione l'esecuzione di script di riscaldamento al riavvio del server.

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

Concedi a tutti i permessi di lettura della directory bin in inetpub \ wss ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top