Вызов Webmethod по параметрам ref / out в javascript - PullRequest
0 голосов
/ 22 ноября 2018

Вот мой webmethod

[WebMethod]
    public string CheckService(string name, ref string msg)
    {
        return "Hello" + name;
    }

, а это мой ajax звонок

$(document).ready(function () {
                $.ajax({
                    type: "POST",
                    url: "<%= ResolveUrl("integrator.asmx/CheckService") %>",
                    data: '{name: "zakki",msg:"" }',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    async: false,
                    success: function (data1) {
                        console.log('', data1.d);
                    }
                });
            });

Возникает ошибка

Cannot convert object of type 'System.String' to type 'System.String&'

1 Ответ

0 голосов
/ 22 ноября 2018

Краткий ответ: вы не можете использовать передачу по ссылке (с ref / out ключевыми словами) для параметров в методе, помеченном атрибутом [WebMethod].

Вот причина, по которойобъясняет, почему & добавлено для второго System.String типа в сообщении об исключении, взято из этой ссылки :

Ключом для декодирования источника этого сообщения является "&"находится в конце текста.Это синтаксис, используемый при передаче параметра в функцию BYREF (By-Reference) и используемый в C-Notation для указания имени переменной «pass the AddressOf».Даже если вы закодировали WebService в C # / VB.NET, Microsoft преобразует / компилирует его в нотацию типа C, когда выводит его в виде сборки.

Следовательно, все параметры внутри метода, который использует *Атрибут 1016 * должен использовать передачу по значению, удаляя ключевое слово ref:

[WebMethod]
public string CheckService(string name, string msg)
{
    // return string here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...