0

変換しようとしている単純な Web サービス メソッドがあります。

<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=True)> _
Public Function GetEmployees() As Object
    Dim _db As New DataClasses1DataContext()

    Return New With {.data = _db.Employees}
End Function

そして、これは私のC#コードです:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]
public object GetEmployees()
{
    DBModelDataContext _db = new DBModelDataContext();
    return new { data = _db.Employees };
}

しかし、サービスを実行するとエラーが発生します。

System.InvalidOperationException: Wystąpił błąd podczas generowania dokumentu XML. --->
System.InvalidOperationException: Aby serializacja XML była możliwa, dla typ&#243;w dziedziczących po elemencie IEnumerable należy zaimplementować metodę Add(System.Object) na wszystkich poziomach hierarchii dziedziczenia. Dla elementu System.Data.Linq.Table`1[[Scheduler.db.Employee, Scheduler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] metoda Add(System.Object) nie jest implementowana.
w System.Xml.Serialization.TypeScope.GetEnumeratorElementType(Type type, TypeFlags& flags)
w System.Xml.Serialization.TypeScope.ImportTypeDesc(Type type, MemberInfo memberInfo, Boolean directReference)
w System.Xml.Serialization.TypeScope.GetTypeDesc(Type type, MemberInfo source, Boolean directReference, Boolean throwOnError)
w System.Xml.Serialization.XmlSerializationWriter.CreateUnknownTypeException(Type type)
w System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(String name, String ns, Object o, Boolean xsiType)
w Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_Object(String n, String ns, Object o, Boolean isNullable, Boolean needType)
w Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write2_anyType(Object o)
w Microsoft.Xml.Serialization.GeneratedAssembly.ObjectSerializer.Serialize(Object objectToSerialize, XmlSerializationWriter writer)
w System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
--- Koniec śladu stosu wyjątków wewnętrznych ---
w System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
w System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o, XmlSerializerNamespaces namespaces)
w System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o)
w System.Web.Services.Protocols.XmlReturnWriter.Write(HttpResponse response, Stream outputStream, Object returnValue)
w System.Web.Services.Protocols.HttpServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream)
w System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)
w System.Web.Services.Protocols.WebServiceHandler.Invoke()

私はこれで4時間立ち往生しています:/

従業員と計画の2つのテーブルを持つ単純なSQLサーバーデータベースがあります。

Ext Scheduler で動作するには、この種のフォーマットが必要です。VB コードは Ext Scheduler Web ページのデモからのものです。C# に変換したいだけです。

編集: Visual Studio 2008 (.NET 3.5) を使用しており、VB のデモは 2010 年 (.NET 4.0) に作成されました。

4

2 に答える 2

0

試す

return new { data = _db.Employees.ToList() };

于 2012-06-01T11:20:55.510 に答える
0

問題は結果の形式でした。XML はクラッシュしましたが、JSON は機能します。JSONデータを返すためにそのWebサービスが必要だったので、問題は(部分的に)解決しました

于 2012-06-26T12:35:32.970 に答える