1

OData__ModerationStatus 列 AKA "Approval Status" の値を 3 つの異なる方法で更新しようとしましたが、機能するのは 1 つだけです。VS 2013 を使用してツールボックスからワークフロー更新アイテム アクティビティを実行すると、ヘッダーに X-RequestDigest がなく、承認ステータスの更新が許可されず、セキュリティ検証エラーが発生することがわかります。エラーはヘッダーの欠落に関連していると思います。UpdateListItem のコードは次のとおりです。

 RequestHeaders = (InArgument<DynamicValue>) ((Activity<DynamicValue>) new SetDynamicValueProperties()
    {
      Properties = {
        {
          "If-Match",
          (InArgument) new InArgument<string>("*")
        },
        {
          "X-HTTP-Method",
          (InArgument) new InArgument<string>("MERGE")
        },
        {
          "Accept",
          (InArgument) new InArgument<string>("application/json;odata=verbose")
        },
        {
          "Content-Type",
          (InArgument) new InArgument<string>("application/json;odata=verbose")
        }
      }
    }),
    RequestContent = (InArgument) listItemProperties,

そのため、2 つの SendHttp アクティビティを使用しました。1 つは URL siteurl/_api/contextinfo の POST を使用して X-RequestDigest を取得し、2 番目の POST は次のヘッダーと Body を使用して取得しました。ヘッダ:

X-RequestDigest:[FormDigestValue from the previous POST]

受け入れる: アプリケーション/json; odata=verbose Content-Type: アプリケーション/json; odata=verbose IF-MATCH: * X-HTTP-Method: MERGE

BODY: [以下の3つを試しました]

String.Format("{ '__metadata': { 'type': '" + type + "' },'OData__ModerationStatus':'0' }")

{ '__metadata': { 'type': 'SP.Data.Shared_x0020_DocumentsItem' }, 'OData__ModerationStatus':'0' }

BuildDynamicValue アクティビティを使用して RequestContent を設定しました。

3 つすべてで Microsoft.SharePoint.SPException: Invalid text value というエラーが発生します。テキスト フィールドに無効なデータが含まれています。他のフィールドを使用すると機能します.FiddlerまたはAdvanced Rest Clientを使用すると、値が更新されます.

誰かがREST呼び出しを介して機能する理由を理解したり説明したりできますが、VSとUpdateItem/HTTPSendを使用して値を設定することはできません.

タイトルを更新するワークフローが成功した画像を含めました ここに画像の説明を入力

4

1 に答える 1

0

シナリオを機能させることができました。さらに調査した結果、ワークフローに承認権限がないことがわかりました。これは、ワークフローのフィドラーで REST 呼び出しをキャプチャすることで確認できます。

{"error":{"code":"-2147024891, System.UnauthorizedAccessException","message":{"lang":"en-US","value":"アクセスが拒否されました。これを実行する権限がありません"},"innererror":{"message":"0x80070005owssvr.dll: (未解決のシンボル、モジュール オフセット = 0000000000015BC3) at 0x000007F988885BC3\nMicrosoft.SharePoint.Library.ni.dll

VS 2013 SP 2013 のワークフローは、プロバイダーがホストするアプリによく似ており、アイテムの承認を含まない既定のアクセス許可があります。

これを修正するには、以下の手順を実行します

• [サイトの設定]  [サイトのアプリのアクセス許可] に移動します。以下に示すように、最初の GUID をコピーしてアプリのワークフローを見つけます。 サイトの権限のスクリーンショット

• http:///_layouts/15/appInv.aspx にアクセスします。前の手順でコピーした Guid をアプリ ID に入力し、[ルックアップ] をクリックします。これにより、タイトル、アプリ ドメイン、およびリダイレクト URL 列が入力されます。以下を Permission Request XML にコピーします (スコープは変更しないでください)。

    <AppPermissionRequests>
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl" /></AppPermissionRequests>

サイトパーマ 2 ルックアップ

サイト パーマ 3 承認 • ワークフローを再度テストしたところ、機能し始めました。

于 2015-08-04T20:53:22.403 に答える