Ошибка 500 для некоторых документов, но не для других.Зачем? - PullRequest
0 голосов
/ 01 марта 2019

Моя надстройка для MS Word работает для одних документов, но не для других.Для test-doc-A работает нормально.Я получаю результаты, которые хочу.test-doc-B генерирует ошибку 500 при вызове $ .ajax, который отправляет текст на сервер.Оба документа - одна страница.Конечно, 500 ошибок должны быть на стороне сервера.Но что может быть такого разного в этих документах, которые это вызывают?

В журналах сервера ничего не указано (на мой взгляд), что говорит мне, в чем проблема.

test-doc-A (All Good)
2019-02-28 23:41:33 MyApiEndPoint POST /api/Document/Upload X-ARR-LOG-ID=8b253a46-bca8-4981-9ded-3fdf671fe63c 443 - myIpAddressMozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+Touch;+rv:11.0)+like+Gecko - https://localhost:44399/Home.html?_host_Info=Word$Win32$16.01$en-US myServerUrl 200 0 0 664 3793 46

test-doc-B (500 Error)
2019-02-28 23:42:13 MyApiEndPoint POST /api/Document/Upload X-ARR-LOG-ID=b0095aa0-9fc5-4a26-83b0-40d44ff160ba 443 - myIpAddress Mozilla/5.0+(Windows+NT+10.0;+WOW64;+Trident/7.0;+Touch;+rv:11.0)+like+Gecko - https://localhost:44399/Home.html?_host_Info=Word$Win32$16.01$en-US myServerUrl 500 0 0 326 11306 46

Есть ли способ сравнить отправляемый текст?Я использую правильный метод range.load ("text") '?

Единственная разница между документами заключается в форматировании.Но я просто отправляю текст, независимо от форматирования, не так ли?

Нужно ли "чистить" текст перед отправкой?Просто так растерялся, прямо сейчас.

function sendTextToServer() {
   Word.run(function (context) {
    var doc = context.document;
    var range = doc.body;

    range.load("text");

    return context.sync()

        .then(function () {
            var myData = '{\"FileName\": \"WordAddIn-Test\",\"Text\": \"' + range.text + '\" }';

            // begin promise
            var promise = $.ajax({
                url: urlToUse + "/Upload",
                method: 'POST',
                contentType: 'application/json; charset=utf-8',
                beforeSend: function (request) {
                    request.setRequestHeader("Authorization", "Negotiate");
                },
                crossDomain: true,
                dataType: 'json',
                processData: false,
                cache: false,
                data: myData,
                success: function (data) {
                    log("sendTextToServer Success: " + JSON.stringify(data));
                },
                error: function (xhr, textStatus, errorMessage) {
                    log("sendTextToServer promise Error: " + errorMessage + "  : " + JSON.stringify(xhr) + "  : " + textStatus);
                }
            });
            // end promise

            // do something with promise
            promise.done(function (data) {
                myDocID = data.documentID;
                log("sendTextToServer myDocID: " + myDocID);
                log("url = " + urlToUse + "/Status?documentID=" + myDocID);
                setTimeout(function () { goDoSomethingElse(); }, 2000);
            });
        })
        .then(context.sync);
   }).catch(function (error) {
        log("Error: " + error);
        if (error instanceof OfficeExtension.Error) {
            log("Debug info: " + JSON.stringify(error.debugInfo));
            log("Something went wrong. Trying again");
        }
    });
}

«Похоже, я выбрал не ту неделю, чтобы перестать нюхать клей».~ Стив МакКроски

...