0

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

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

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

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

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

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

4

3 に答える 3

1

ああ、神様

わかりました、それで私は何かを試しました、それはロングショットでしたが、私は知恵の終わりでした.

MSMQ と通信していたすべてのコード (アイテムをキューに追加する) を、昇格された権限で実行したところ、うまくいきました!!!!

SPSecurity.RunWithElevatedPrivileges(delegate() { //ここに MSMQCode });

これで、サーバーを再起動して、以前にエラーが発生していた作業を実行できるようになりました。問題なく動作しています。

于 2009-10-29T12:41:34.370 に答える
0

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

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

于 2009-10-28T18:53:19.887 に答える
0

全員に inetpub\wss などの bin ディレクトリへの読み取り権限を与えます。

于 2009-12-03T13:31:22.313 に答える