Получить пользовательский объект WCF с Json

0

[Решено]

Я сделал небольшой тестовый проект, чтобы опереться на работу с объектами WCF и Json. Если у вас есть хорошие ресурсы/учебники, сделайте это, пожалуйста, дайте мне знать.

Я пытаюсь получить пользовательский объект User по его id с помощью некоторого сценария jQuery, при этом моя служба завершается с ошибкой без сообщения. Возвращение "известных" объектов, таких как int или string работает хорошо, поэтому я думаю, что мой web.config должен быть в порядке

IService

[ServiceContract]
public interface IService
{   
    [OperationContract]
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
    User GetUser(int id);       
}

[DataContract]
public class User
{
    [DataMember]
    public int id { get; set; }
    [DataMember]
    public string name { get; set; }
}

Service.svc.cs

[AspNetCompatibilityRequirements(RequirementsMode
= AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1 : IService
{  
    public User GetUser(int id)
    {
        return new User() { id=1, name="foo" };
    }
}

Json

var Type;
var Url;
var Data;
var ContentType;
var DataType;
var ProcessData;    

$(document).ready(
        function() {
            $("#log").append("<p>Document ready</p>");
            GetUser();
        }
    );  

function GetUser() {
        $("#log").append("<p>Called GetUser</p>");
        var userid = "1";
        Type = "POST";
        Url = "http://localhost:4270/Service.svc/GetUser";
        Data = '{"Id": "' + userid + '"}';
        ContentType = "application/json; charset=utf-8";
        DataType = "json"; 
        varProcessData = true; 
        CallService();
    }

function CallService() {
        $("#log").append("<p>Called CallService</p>");
        $.ajax({
            type: Type,
            url: Url,
            data: Data,
            contentType: ContentType,
            dataType: DataType,
            processdata: ProcessData,
            success: function(msg) {
                ServiceSucceeded(msg);
            },
            error: ServiceFailed
        });
    }

function ServiceSucceeded(result) {
        $("#log").append("<p>ServiceSucceeded</p>");
        if (DataType == "json") {
            user = result.GetUserResult;
            $("#result").append("<p> user = " +user+ "</p>");
            $("#result").append("<p> id = " +user.id+ "</p>");
            $("#result").append("<p> name = " +user.name+ "</p>");
        }
    }
  • 5
    Разве это не ясно? Вы вызываете GetUser рекурсивно, без остановки. return GetUser(Convert.ToInt32(id));
  • 0
    Да .. после прочтения я сразу же увидел это ... У меня была другая ошибка, и я отредактирую свой вопрос.
Показать ещё 2 комментария
Теги:
wcf

1 ответ

1

Вы пытались изменить случай своих данных?

так это:

Data = '{"Id": "' + userid + '"}';

Должно быть:

Data = '{"id": "' + userid + '"}';

Ещё вопросы

Сообщество Overcoder
Наверх
Меню