Атрибут <WebMethod ()> изменен с 2.0 на 3.5 - PullRequest
0 голосов
/ 08 декабря 2010

У меня есть метод, который выглядит следующим образом:

<WebMethod()> _
Public Function Search(ByVal q As String) As String

Обновление с .net 2.0 до 3.5, кажется, сломало это.

Мы выполняем data.split () навозвращаемое значение, и это вызывает ошибку - похоже, возвращаемое значение теперь является структурой json, а не простой строкой.

Есть ли способ вернуться к предыдущему поведению?

Ответы [ 2 ]

0 голосов
/ 09 декабря 2010

У нас была похожая проблема. При базовой настройке вызова ajax Webmethod и jquery с 2.0 он возвращает строку (строка типа в js) или строковый массив (тип объекта в js), в 3.5 он всегда возвращает объект, а при возврате фактические данные находятся ниже .d примитив, такой как строка или массив строк.

Моим лучшим решением до сих пор был метод javascript для проверки .d.

    function getResponse(r){
        if(r.d!=null){
            return r.d;
        }else{
            return r;
        }
    }

Я должен поддержать как 2.0, так и 3.5 вызовы для перехода, и мне не придется тратить слишком много энергии, так как 2.0 скоро не будет.

Но я бы предпочел лучшее решение.

0 голосов
/ 08 декабря 2010

Вам придется импортировать System.Web.Script.Services

Затем попробуйте добавить этот атрибут:

<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Xml)> _

Как вы вызываете веб-метод?Через JavaScript?

...