3

SharePoint でホストされるアプリを作成し、アプリにライセンス チェックを追加しました。ライセンス チェックは、SP.WebProxy を使用して REST エンドポイントを呼び出すことによって行われます。アプリはアプリ パーツとして実装されるため、ページ上にアプリのインスタンスが多数存在する可能性があります。

ページにアプリのインスタンスが 1 つまたは 2 つしかない場合は、すべて正常に機能します。ただし、ページに 3 番目のインスタンスを追加するとすぐに、3 番目のインスタンスがライセンス チェックに失敗し始め、「このアプリはアウトバウンド リクエストの制限に達しました」というエラーが表示されます。

これは明らかに、3 つのインスタンスすべてが同時に SharePoint Proxy サービスにアクセスしているためです。特定のアプリで許可されている同時通話の数に制限があるように見えます。

問題は、この制限に関するドキュメントが見つからないことです。私が得ているエラーは、Google で 1 回もヒットしません。これは、web.config の設定で増やすことができる制限ですか?

これに関して私が相談できるドキュメントを知っている人はいますか?

4

1 に答える 1

0

このエラーを回避するために、以下の回避策を使用しました。(エラーメッセージを確認し、「setTimeout」を使用してクエリを再実行します)

var response = SP.WebProxy.invoke(context, request);

    // Set the event handlers and invoke the request.
    context.executeQueryAsync(
        function () {
            if (response.get_statusCode() == 200) {
                var arrayResult = xmlToJson($.parseXML(response.get_body()));

                d.resolve(arrayResult);
            }
            else {
                var errorMessage = response.get_body();
                if (response.get_statusCode() == 403 && errorMessage == "This app has reached its outbound request limit.") {
                    //Try again in 100ms
                    setTimeout(function () {
                        console.log("reload");

                        response = SP.WebProxy.invoke(context, request);
                        context.executeQueryAsync(function () {
                            if (response.get_statusCode() == 200) {
                                var arrayResult = xmlToJson($.parseXML(response.get_body()));

                                d.resolve(arrayResult);
                            }
                        });
                    }, 100);
                }
                else {
                    d.reject(response.get_body());
                }
            }
        },
        function () { d.reject(response.get_body()); });

    return d.promise();
于 2016-11-01T17:44:15.940 に答える