Где я ошибаюсь при вызове веб-методов ASMX из jquery? - PullRequest
0 голосов
/ 03 марта 2009

У меня есть простой веб-метод в приложении asp.net 2.0 (с использованием расширений 1.0, а не расширений 3.5 ajax). Я пытаюсь вызвать метод из jQuery, и когда я делаю это, как показывают многочисленные примеры в Интернете и здесь, в SO, я получаю сообщение об ошибке Internal Server Error.

Вот мой текущий код:

[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public string Select(string login)
{
    UserProfile profile = UserProfile.GetUserProfile(login);

    return "{ FirstName: '" + profile.FirstName + "', " +
             "LastName: '" + profile.LastName + "', " +
             "EmailAddress: '" + profile.EmailAddress + "', " +
             "PhoneNumber: '" + profile.PhoneNumber + "' }";
 }

А теперь jquery:

$.ajax({
    type: "POST",
    url: "Services/ProfileService.asmx/Select",
    dataType: "json",
    data: "{'login':'DOMAIN%5CUSER1'}",
    contentType: "application/json; charset=utf-8",
    success: function(msg){ alert(msg); },
    error: function(xhr){ alert(xhr.statusText);}     
});

Веб-сервис также имеет атрибут [ScriptService]. Если я закомментирую contentType, изменит dataType на text и изменит данные на строку запроса (name = value), я получу XML, возвращенный соответствующим образом.

Где я иду не так?

UPDATE: Я использую jQuery v1.3.1 и тестирую как в IE6, так и в Firefox 3. Я получаю согласованные результаты.

Ответы [ 3 ]

2 голосов
/ 04 марта 2009

Это была глупая ошибка с моей стороны. Проблема была решена. Хотя я включил ссылку на Расширения AJAX, я забыл переписать httphandler для служб ASMX в класс ScriptHandlerFactory.

Добавление этой проблемы решило проблему.

Так как мне пришло несколько писем с запросами о примерах или о том, как я исправил проблему, я написал сообщение в блоге о том, как приготовить этот суп с орехами.

http://randomactsofcoding.blogspot.com/2009/03/jquery-json-and-asmx-20-services.html

0 голосов
/ 07 декабря 2011

У меня была та же проблема, но она была исправлена, когда я добавил следующее в файл кода

[System.Web.Script.Services.ScriptService]

0 голосов
/ 03 марта 2009

Yeap. Вы должны отказаться от ASMX для WCF. Рекомендация от самих Microsoft. Думаю, это не поможет вам в вашей проблеме, но вам стоит подумать о WCF или хотя бы начать изучать эту технологию.

...