Nested Type et Ajax-enabled WCF service => bug
Dans le cadre d'un test, j'ai récemment fait un service WCF qui ressemblait à peu près à ça :
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service
{
[DataContract]
public class Person
{
[DataMember]
public String FirstName { get; set; }
}
[OperationContract]
[WebGet]
public Person GetPerson()
{
return null;
}
}
J'ai donc rajouté une référence vers ce service au niveau de ma page pour que je puise accéder à ce service WCF en JavaScript.
<asp:ScriptManager runat="server">
<Services>
<asp:ServiceReference Path="~/Service.svc" />
</Services>
</asp:ScriptManager>
Lorsque l'on rajoute une référence vers un service WCF (ou asmx) via le ScriptManager. Lors de la phase de rendering, on ajoute un script vers /service.svc/js ce fichier contient le proxy nous permettant de dialoguer avec le WebService.
Dans le cas d'un nested type, le proxy généré contient ça :
var Service.Person=gtc("Service.Person:http://schemas.datacontract.org/2004/07/");
Ce qui fait évidemment planter le proxy puisque l'on ne peut pas déclarer une variable contenant le signe "."
Ce n'est pas très génant puisqu'on doit très rarement renvoyer des nested type (et je ne trouve pas ça propre). Je viens néanmoins d'ouvrir un bug sur connect : nested type in WCF with JSON Serialization