1

私は実際にこれをすでに解決しましたが、解決策が奇妙だと思うので控えめに言っても. 私がああとても素敵になっていることがわかったら

「エラー: TrackedRequests に要求が見つかりません。別のスレッドで Web を作成して閉じている可能性があります」

これは、ほとんどの SharePoint 開発者にとって非常になじみのあるものです。この場合は、ワークフロー用です。私はそれを解決することができましたが、それは私にとって少し不可解でした。試行錯誤の末、これで解決したようです。

前のコード:

SPWeb = workflowPriperties.Site.RootWeb;

現在のコード:

Guid siteId = workflowProperties.Site.ID;

using (SPSite site = new SPSite(siteId))
{
  using (SPWeb web = site.OpenWeb(site.RootWeb.ID))
  {
    //Do Something
  }
}

これにより、私の特定の方法に起因する問題が解決されました。現在、自分のカスタム コードからのものではないように見えるエラー メッセージが表示されましたが (理由はまだわかりません)、以下のように作成された workflowProperties オブジェクトの印象を受けていたため、当惑しています。

public Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties workflowProperties = new Microsoft.SharePoint.Workflow.SPWorkflowActivationProperties();

これらはすべて、SPContext から取得するのと似ています。つまり、破棄したり閉じたりする必要はありません。これは、SPWorkflowActivationProperties オブジェクトの一部のプロパティが、実際には SPRequest オブジェクトの新しいインスタンスであるか、新しい SPRequest オブジェクトから派生したものであるということですか?

私の質問があまりにもばかげているように見えないことを願っています。これに答えるスレッドを教えてください。

ありがとう。

4

1 に答える 1

0

わかりました、私はワークフロー プロパティの問題についてではありませんが、エラーを追跡しました。

問題はこのコードが原因でした

public void readusersFromItems(SPListItem item)
{
 Guid siteid = item.Web.Site.ID;
 Guid webId = item.ParentList.ParentWeb.ID;

ワークフロー プロパティから SPListItem オブジェクトに基づいて Guid を取得し、それをライブラリ クラスに渡すと、ID を与える前にサイトと Web オブジェクトがインスタンス化されるという問題が発生するようです。Guid をメソッドに直接渡したときに問題が解決したため、その動作は私の推測にすぎません。

SPWeb と SPSite Guid は、SPListItem オブジェクトから派生させると追跡が困難なエラーが発生するため、ライブラリ クラスのワークフロー外のメソッドに常に渡す必要があります。

于 2010-12-16T10:35:55.927 に答える