Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / JSON WCF сервис не сериализует выборку / 4 сообщений из 4, страница 1 из 1
17.01.2013, 18:26
    #38114438
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON WCF сервис не сериализует выборку
Виновник торжества:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
    <OperationContract>
    <WebGet(UriTemplate:="/GetList?Page={Page}&Records={Records}&ID={ID}", RequestFormat:=WebMessageFormat.Json, _
        ResponseFormat:=WebMessageFormat.Json, BodyStyle:=WebMessageBodyStyle.Bare)>
    Public Function GetList(Page As Integer, Records As Integer, Optional ID As Integer = 0) _
        As Response Implements IDataManipulation.GetList

        Dim cid As Integer = _State.PropertyValue("ClassificatorID")
        Dim x As Integer = db.mtskCatalogueInClassificator.Count(Function(p) p.CatalogueID = ID And p.ClassificatorID = cid)
        Dim sFilter As String = IIf(x > 0, "Filter=ClassificatorID=" & cid, "")

        Dim oCat As tblCatalogue = (From v In db.tblCatalogue Where v.CatalogueID = ID).Single

        Dim mRes As New Response("CATALOGUE")
        If oCat.Level = 2 Then
            mRes.Rowset.rows = db.tblCatalogue.SqlQuery("mp_TreeGet 'CATALOGUE'," & oCat.CatalogueID & _
                ",2,-1,-1,3,'" & sFilter & "','LeftKey'").ToList
        Else
            mRes.Rowset.rows = db.tblCatalogue.SqlQuery("mp_TreeGet 'CATALOGUE'," & oCat.CatalogueID & _
                "," & oCat.Level & ",-1,1,3,'" & sFilter & "','LeftKey'").ToList
        End If
        Dim jss As New JavaScriptSerializer
        Debug.Print(jss.Serialize(mRes))
        Return mRes
    End Function

<DataContract>
Public Class Response
    <DataMember>
    Public SvcItem As String
    <DataMember>
    Public [Rowset] As Rowset

    Public Sub New(ByVal sObjNAme As String)
        Rowset = New Rowset
        SvcItem = sObjNAme
    End Sub
End Class

<DataContract>
Public Class Rowset
    <DataMember>
    Public localRowset As Boolean
    <DataMember>
    Public entire As Integer
    <DataMember>
    Public total As Integer
    <DataMember>
    Public rows As IEnumerable(Of Object)
End Class


Вызываю его из html-страницы:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
$.ajax({
    type: 'GET',
    url: "http://localhost:38377/Catalogue.svc/GetList?Page=1&Records=1&ID=8",
    contentType: 'application/json; charset=utf-8',
    success: function (response, status, xhr) { alert('success: ' + xhr.responseText); },
    error: function (xhr, status, error) { 
        if(!xhr.responseText.length)alert("Error\n-----\n" + xhr.status);
        if(xhr.responseText.length)document.write(xhr.responseText); 
    }
});


Если закомментировать выделенные строки, то на клиенте полный success, а если раскомментировать, то error 0 и пустой responseText, но JavaScriptSerializer отрабатывает на ура. Если заменить IEnumerable(Of Object) на List(Of tblCatalogue), результат аналогичный. Если раскомментировать и убрать <DataMember> у rows, то будет success, но соответственно без rows.

Как можно подружить сервис с SqlQuery без jss?
...
Рейтинг: 0 / 0
18.01.2013, 12:12
    #38115101
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON WCF сервис не сериализует выборку
Ну и фиг с ним. Сделаю ashx + jss, wsdl все равно не нужно. Писанины даже меньше.
...
Рейтинг: 0 / 0
15.02.2013, 12:28
    #38152602
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON WCF сервис не сериализует выборку
Antonariy,

так, где конфиг wcf службы?
там от него зависит многое для того, чтобы wcf выплюнул json из метода.
вообще тут есть тема, как это настроить. я там и описывал все ньансы.
поищи пожалуйста.
...
Рейтинг: 0 / 0
15.02.2013, 12:32
    #38152611
AlexeiK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON WCF сервис не сериализует выборку
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / JSON WCF сервис не сериализует выборку / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]