質問

サーバーの再起動後に問題が発生します。 SharePointには、さまざまなことを行うための機能があります。彼らが行うことの1つは、いくつかの異なるMSMQキューにアイテムを追加することです。サーバーの再起動後すぐに、SharePointにログインして私のカスタムページに移動し、そのページ内のボタンをクリックすると(msmqアイテムが作成されます)、ページが表示されます次:

ウェブサイトはこのウェブページの表示を拒否しました このエラー(HTTP 403禁止)は、Internet ExplorerがWebサイトに接続できたが、Webページを表示する権限がないことを意味します

イベントログを掘り下げると、アプリケーションに次のエラーが見つかります。

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へのアクセス時のアプリケーションエラー、Error = Access   否定された。 (HRESULTからの例外:0x80070005(E_ACCESSDENIED))   サーバースタックトレース:at   System.Transactions.Oletx.IDtcProxyShimFactory.ConnectToProxy(String   nodeName、Guid resourceManagerIdentifier、IntPtr managedIdentifier、   ブール& nodeNameMatches、UInt32& whereaboutsSize、CoTaskMemHandle&   whereaboutsBuffer、IResourceManagerShim& resourceManagerShim)で   System.Transactions.Oletx.DtcTransactionManager.Initialize()で   System.Transactions.Oletx.DtcTransactionManager.get_ProxyShimFactory()   で   System.Transactions.Oletx.OletxTransactionManager.CreateTransaction(TransactionOptions   プロパティ)at   System.Transactions.TransactionStatePromoted.EnterState(InternalTransaction   tx)...
      ... at System.Transactions.EnlistableStates.Promote(InternalTransaction tx)
  System.Transactions.Transaction.Promote()で   System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transaction   トランザクション)at   System.Transactions.TransactionInterop.GetDtcTransaction(Transaction   トランザクション)at   System.ServiceModel.Channels.MsmqQueue.GetNativeTransaction(MsmqTransactionMode   transactionMode)at   System.ServiceModel.Channels.MsmqQueue.SendDtcTransacted(NativeMsmqMessage   メッセージ、MsmqTransactionMode transactionMode)   System.ServiceModel.Channels.MsmqQueue.Send(NativeMsmqMessageメッセージ、   MsmqTransactionMode transactionMode)at   System.ServiceModel.MsmqIntegration.MsmqIntegrationOutputChannel.OnSend(Message   メッセージ、TimeSpanタイムアウト)System.ServiceModel.Chann ...

2つのVMがあります。1つはWeb(共有ポイント)マシン用で、もう1つはDBマシン(すべてのコンテンツデータベースなどが格納されています)です。 DBサーバーはプライマリドメインコントローラであり、両方のマシンは同じドメインの一部です。 SharePointアプリケーションプールに使用するドメインユーザーを作成しました。

奇妙なことに、アプリケーションの別の部分に移動してそのコードを実行することでエラーをなくすことができます(msmqにエントリが追加されます)。それが完了すると、アプリケーションの残りのすべてが通常どおりに動作します。

どんな助けでも信じられないほど高く評価されます。

注:エラーは、SharePointサイトのIISの匿名ユーザー(IUSR ...)と関係があることに気付きました。そのユーザーをドメイン管理者ユーザーに変更しましたが、エラーは発生しなくなりました。だから、それはIUSR ..ユーザーの許可に関係するものですが、私は何がわからない...

役に立ちましたか?

解決

O M G

わかりました、それで私は何かを試みました、それは長いショットでしたが、私は気の利いた終わりでした。

MSMQと通信しているすべてのコード(キューにアイテムを追加)をラップし、特権を上げて実行しましたが、動作しました!!!!

SPSecurity.RunWithElevatedPrivileges(delegate() { // MSMQCodeはこちら });

今、サーバーを再起動して、以前にエラーが発生したことを行うことができ、それは正常に動作します!

他のヒント

サーバーの再起動時にウォームアップスクリプトを実行することを検討してください。

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

inetpub \ wssなどの下のbinディレクトリに対する読み取り権限を全員に付与します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top