0

Sharepoint リストのイベント レシーバーをデバッグしようとして悪夢にうなされています。これは私がやっていることのコードです:

//Add an event receiver to the list
list.EventReceivers.Add(SPEventReceiverType.ItemAdded, "DatasEvent, Version = 1.0.0.0, Culture = neutral, PublicKeyToken =  6f4db1e1fedbed57", "DatasEvent.DatasEventReceiver");

public override void ItemAdded(SPItemEventProperties properties)
{
    try
    {
        int itemIdSql;
        SPListItem item = properties.ListItem;
        ...
    }
    catch (SqlException ex)
    {
        Debug.WriteLine(ex.Message);
    }
}

イベント レシーバーにブレークポイントを配置しても停止しません。

4

6 に答える 6

2

ビジュアル スタジオの [デバッグ] -> [プロセスのアタッチ] -> リスト内の使用可能なすべての w3wp.exe をアタッチします。次に、Web ブラウザーで機能を有効にしてみてください。ブレークポイントをロードしてヒットする必要があります。

于 2011-11-11T15:22:34.997 に答える
1

個人的には、System.diagnostic.debug.WriteLn() メッセージをイベント レシーバー コードに追加し、サーバー上で DebugView を使用して表示する方法を好みます。毎回ワーカー プロセスにアタッチするのは面倒です。

于 2011-11-11T16:12:17.127 に答える
0

2つのweb.configファイルでSharePointのデバッグを有効にする必要があります。ランタイムを停止するには、Debugger.Launch()を使用する必要があります。たとえば、展開とアクティベーションイベントが発生した後(EventReceiverのコードにはDebugger.Launch()コマンドがあります)、VSはコードをデバッグするように要求します。

「プロセスにアタッチ」を使用する必要はありませんが、デバッグするためのもう1つの可能な方法です。

このリンクは私を大いに助けました

于 2012-12-28T09:42:03.167 に答える
0

まず、最新のアセンブリ バージョンが GAC に到達することを確認します。最も簡単な方法は、プロジェクトのコンテキスト メニューから [デプロイ] オプションを使用するか、単に F5 キーを押すことです。

次に、このコードが割り当てられている場所をお知らせください

// リストにイベント レシーバーを追加する list.EventReceivers.Add(SPEventReceiverType.ItemAdded, "DatasEvent, Version = 1.0.0.0, Culture = Neutral, PublicKeyToken = 6f4db1e1fedbed57", "DatasEvent.DatasEventReceiver");

フィーチャー レシーバーに配置されている場合は、対象の Web アプリケーションが対応するアプリ プールに対応する w3wp.exe にアタッチする前に、アクティブ化されていることを確認してください。

于 2011-11-15T15:21:29.510 に答える
0

私は試してみます:

Debugger.Launch();

開発環境でのみ、それ以外の場合はすべてのリクエストに対してデバッグを試みます。

イベントレシーバーを追加する前に配置します。

于 2011-11-11T16:48:09.247 に答える
0

ItemAddedは、アイテムが追加された後に発生する非同期イベントを処理します。実行はタイマー ジョブを介して実行されます (現在のワーカー プロセス w3wp では実行されません)。したがって、OWSTIMER プロセスにアタッチしてデバッグする必要があります。

于 2011-12-27T09:26:46.843 に答える