我的服务器重新启动后出现问题。我在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)) 服务器堆栈跟踪:at System.Transactions.Oletx.IDtcProxyShimFactory.ConnectToProxy(字符串 nodeName,Guid resourceManagerIdentifier,IntPtr managedIdentifier, 布尔和放大器; nodeNameMatches,UInt32& whereaboutsSize,CoTaskMemHandle& whereaboutsBuffer,IResourceManagerShim& resourceManagerShim)at System.Transactions.Oletx.DtcTransactionManager.Initialize()at System.Transactions.Oletx.DtcTransactionManager.get_ProxyShimFactory() 在 System.Transactions.Oletx.OletxTransactionManager.CreateTransaction(TransactionOptions 物业) System.Transactions.TransactionStatePromoted.EnterState(InternalTransaction tx)...
...在System.Transactions.EnlistableStates.Promote(InternalTransaction tx)
在System.Transactions.Transaction.Promote()at System.Transactions.TransactionInterop.ConvertToOletxTransaction(交易 交易) System.Transactions.TransactionInterop.GetDtcTransaction(交易 交易) System.ServiceModel.Channels.MsmqQueue.GetNativeTransaction(MsmqTransactionMode transactionMode)at System.ServiceModel.Channels.MsmqQueue.SendDtcTransacted(NativeMsmqMessage 消息,MsmqTransactionMode transactionMode)at System.ServiceModel.Channels.MsmqQueue.Send(NativeMsmqMessage消息, MsmqTransactionMode transactionMode)at System.ServiceModel.MsmqIntegration.MsmqIntegrationOutputChannel.OnSend(消息 消息,TimeSpan超时)在System.ServiceModel.Chann ...
我有两个虚拟机,一个用于Web(共享点)计算机,另一个用于DB计算机(存储所有内容dbs等)。数据库服务器是主域控制器,两台计算机都属于同一个域。我已经创建了一个用于SharePoint应用程序池的域用户。
奇怪的是,可以通过转到我的应用程序的不同部分并运行该代码(这也会在msmq中添加一个条目)来消除错误。完成后,应用程序的其余部分将正常工作。
任何帮助都会令人难以置信。
注意:我注意到该错误与IIS中的SharePoint站点的匿名用户(IUSR ...)有关。我将该用户更改为域管理员用户,并且不再发生错误。所以,这与IUSR ..用户的权限有关,但我不知道是什么......
答案 0 :(得分:1)
O M G
好的,所以我尝试了一些东西,这是一个很长的镜头,但我在我的智慧结束。
我将所有与MSMQ交谈的代码(在队列中添加项目)包含在升级后的privelages中,并且有效!!!!
SPSecurity.RunWithElevatedPrivileges(委托() { // MSMQCode在这里 });
现在,我可以重新启动服务器,并执行以前发生错误的内容,并且工作正常!
答案 1 :(得分:0)
考虑在服务器重启时运行预热脚本。
答案 2 :(得分:0)
给每个人读取inetpub \ wss等下的bin目录的权限。