Как отправить JSON в Asp.NET Webservice? - PullRequest
3 голосов
/ 24 февраля 2011

У меня есть объект javascript, который я сериализую с использованием библиотеки JSON2. Затем я пытаюсь передать эту строку JSON в веб-службу ASP.net. Я изменил веб-метод, чтобы попробовать несколько различных конфигураций параметров, но все они приводят к «500 - Внутренняя ошибка сервера»

Может кто-нибудь дать мне подсказку?

 function postDataToService(data) {
    $.ajax({
        url: "http://localhost:2686/DataCollectionService.asmx/StoreDataOut",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        data: data,
        success: showSuccessNotice,
        error: showFailureNotice,
        dataType: "json"
    });

} //postdatatoservice

function convertDataToJSON(jsObj) {

    return JSON.stringify({ list: jsObj });

} //converdatatojson

Веб-сервис:

 [WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
[System.Web.Script.Services.ScriptService]
public class DataCollectionService : WebService
{

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string StoreDataOut(List<string> list)
    {
        return "Complete";
        //model functionality
    }
}

Ответы [ 2 ]

3 голосов
/ 25 февраля 2011

Я понял ..

Шаг 1 : Я обернул объект JS в другой объект, который содержит свойство, которое соответствует имени параметра в веб-методе. Заметные кавычки вокруг

return JSON.stringify({'json':jsObj});

Шаг 2 Затем я сериализовал этот новый объект-обертку с помощью JSON.stringify ().

Шаг 3 Имя параметра в веб-методе соответствует опубликованному имени свойства json. Тип 'объект'

 public string StoreDataOut(object json)
    {

    }
2 голосов
/ 24 февраля 2011

Я использовал предоставленный вами код и смог опубликовать в веб-сервисе без проблем.

Некоторые вопросы:

  1. Как выглядят данные?
  2. Что такое ошибка сервера 500? Можете ли вы просматривать веб-сервис напрямую без ошибок? http://localhost:2686/DataCollectionService.asmx/StoreDataOut
  3. Я заметил в ваших данных, что вы никогда не звоните convertDataToJSON() это опечатка? Если нет, выполните сообщение ajax, как показано ниже:


   $.ajax({
            url: "http://localhost:2686/DataCollectionService.asmx/StoreDataOut",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            data: convertDataToJSON(data),
            success: showSuccessNotice,
            error: showFailureNotice,
            dataType: "json"
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...