I have a simple web service method which I’m trying to convert:
<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
And this is my C# code:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]
public object GetEmployees()
{
DBModelDataContext _db = new DBModelDataContext();
return new { data = _db.Employees };
}
But when I run my service I get an error:
System.InvalidOperationException: Wystąpił błąd podczas generowania dokumentu XML. --->
System.InvalidOperationException: Aby serializacja XML była możliwa, dla typó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()
I’m stuck for 4 hours now with this :/
I have a simple sql server database with 2 tables Employee and Plans.
I need this kind of format to work with Ext Scheduler.
VB code is from demo on Ext Scheduler webpage, I just want to convert it to C#.
EDIT:
I’m using Visual Studio 2008 (.NET 3.5) and the demo in VB was created in 2010(.NET 4.0).
The problem was result format. XML crashed, but JSON works.
I’ve needed that webservice to return JSON data, so problem solved (partially)