Почему при создании аннотации с использованием http-запроса на веб-ресурсе html в Dynamics 365 появляется ошибка 500 Internal Server Error? - PullRequest
0 голосов
/ 04 февраля 2020

Пользователи хотят создавать заметки (аннотации) на вкладке с настраиваемым представлением заметок, созданным с помощью html и javascript. Я добавил следующий код в ресурс, и хотя примечание создано и инцидент связан по желанию, веб-ресурс возвращает в форме внутреннюю ошибку сервера 500.

Вот добавленный код:

    <script>
        function addNewNote(title_b, notetext_b) {
            debugger;
            caseId = getUrlParam("id");
            console.log("Case ID: " + caseId);
            console.log("Title: " + title_b);
            console.log("NoteText: " + notetext_b);
            var entity = {};
            entity["objectid_incident@odata.bind"] = "/incidents(" + caseId + ")";
            entity["subject"] = title_b;
            entity["notetext"] = notetext_b;

            var req = new XMLHttpRequest();
            req.open("POST", parent.Xrm.Page.context.getClientUrl() + "/api/data/v9.0/annotations", true);
            req.setRequestHeader("OData-MaxVersion", "4.0");
            req.setRequestHeader("OData-Version", "4.0");
            req.setRequestHeader("Accept", "application/json");
            req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
            req.onreadystatechange = function () {
                debugger;
                if (this.readyState === 4) {
                    req.onreadystatechange = null;
                    if (this.status === 204) {
                        var uri = this.getResponseHeader("OData-EntityId");
                        var regExp = /\(([^)]+)\)/;
                        var matches = regExp.exec(uri);
                        var newEntityId = matches[1];
                    } else {
                        parent.Xrm.Utility.alertDialog(this.statusText);
                    }
                }
            };
            req.send(JSON.stringify(entity));
            parent.Xrm.Page.getControl("WebResource_NotesTabView").refresh();
        }

    </script>
    <form action="" method="get" class="form-newnote">
        <div class="form-newnote">
            <label for="sub">Title </label>
            <input type="text" size="114" name="sub" id="sub" required="true">
        </div>
        <div class="form-newnote">
            <label for="notetext">Note </label>
            <textarea name="notetext" rows="4" cols="114" id="notetext"></textarea>
        </div>
        <div class="form-newnote">
            <button onclick="addNewNote(sub.value, notetext.value)">Add Note</button>
        </div>
    </form>

Перед нажатием «Добавить заметку»: до

После нажатия «Добавить заметку»: после

Сохранить помните, что записка успешно создана и связана с делом.

1 Ответ

0 голосов
/ 04 февраля 2020

Я мог бы почувствовать 2-3 проблемы.

  1. this.status Я думаю, что здесь вы должны отладить, возможно, вы вернетесь как 200, а не 204.

  2. Вы называете webapi асинхронным, это не должно быть проблемой, но попробуйте назвать его синхронным.

  3. Если вы говорите, что заметки созданы, следите за журналом в консоли и проверьте, до какой точки ваш код достигает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...