views:

872

answers:

3

I have an issue that is occurring after my server reboots. I have some features in SharePoint, for doing various things. One thing they do is add items into a couple of different MSMQ queues. Immediately after a server reboot, if I try to log in to SharePoint and I go to a custom page of mine, and click on a button within that page (which would then create the msmq item) I get taken to a page that displays the following:

The website declined to show this webpage This error (HTTP 403 Forbidden) means that Internet Explorer was able to connect to the website, but it does not have permission to view the webpage

If I dig in to the Event Logs I find the following errors in Application:

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

ALSO, if I dig in to the SharePoint logs, I find the following errors:

Application error when access /my/site/url/MyPage.aspx, Error=Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) Server stack trace: at System.Transactions.Oletx.IDtcProxyShimFactory.ConnectToProxy(String nodeName, Guid resourceManagerIdentifier, IntPtr managedIdentifier, Boolean& nodeNameMatches, UInt32& whereaboutsSize, CoTaskMemHandle& whereaboutsBuffer, IResourceManagerShim& resourceManagerShim) at System.Transactions.Oletx.DtcTransactionManager.Initialize() at System.Transactions.Oletx.DtcTransactionManager.get_ProxyShimFactory() at System.Transactions.Oletx.OletxTransactionManager.CreateTransaction(TransactionOptions properties) at System.Transactions.TransactionStatePromoted.EnterState(InternalTransaction tx) ...
...at System.Transactions.EnlistableStates.Promote(InternalTransaction tx) at System.Transactions.Transaction.Promote() at System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transaction transaction) at System.Transactions.TransactionInterop.GetDtcTransaction(Transaction transaction) at System.ServiceModel.Channels.MsmqQueue.GetNativeTransaction(MsmqTransactionMode transactionMode) at System.ServiceModel.Channels.MsmqQueue.SendDtcTransacted(NativeMsmqMessage message, MsmqTransactionMode transactionMode) at System.ServiceModel.Channels.MsmqQueue.Send(NativeMsmqMessage message, MsmqTransactionMode transactionMode) at System.ServiceModel.MsmqIntegration.MsmqIntegrationOutputChannel.OnSend(Message message, TimeSpan timeout) at System.ServiceModel.Chann...

I have two VMs, one for the web (sharepoint) machine, and one of the DB machine (where all the content dbs etc are stored). The DB server is a primary domain controller, and both machines are part of the same domain. I've created a domain user to use for the SharePoint application pool.

Strangely, it is possible to make the errors go away by going to a different part of my application and running that code (which also adds an entry into the msmq). Once that is done, then all of the rest of the application works as normal.

Any help would be incredibly appreciated.

Note: I noticed that the error had something to do with the anonymous user (IUSR...) in IIS for the SharePoint site. I changed that user to be a domain administrator user, and the error no longer happens. So, it's something to do with the permissions of the IUSR.. user, but I don't know what...

A: 

Consider running warm up scripts upon server reboot.

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

UJ
Thank you, I'll look into that to see if it makes a difference.
zikoziko
A: 

O M G

Ok, so I tried something, it was a LONG shot, but I was at my wits end.

I wrapped all of the code that was talking to the MSMQ (adding items to the queue) in the run with elevated privelages thang, and it worked!!!!

SPSecurity.RunWithElevatedPrivileges(delegate() { //MSMQCode here });

Now, I can reboot the server, and do the stuff that was erroring before, and it works fine!

zikoziko
A: 

Give everyone read permission to the bin directory under inetpub\wss etc..

wefwfwefwe