Vous cherchez des conseils sur un service de repos wcf 4 basé sur l'extension WCF REST Template 40 (CS) dans VS2010. J'ai passé les deux derniers jours à essayer de faire fonctionner ce bugger, en passant en revue d'autres posts, et même si je me suis rapproché, je n'arrive pas à franchir la ligne d'arrivée. Après beaucoup de frustration, il finit par atteindre le service et l'envoi (en utilisant le générateur de requête fiddler) mais le paramètre de la méthode apparaît comme nul, mais il est correctement défini dans le générateur de requête. Je suppose que c'est peut-être une question de config à ce stade, mais comme la date limite approche, je manque de temps pour plus de recherche. FWIW, lors du débogage, la variable jsonstring est nulle. Personnellement, je me pose une question de noob car c'est la première fois que je passe par REST, toute aide serait très appréciée!Service WCF REST JSON Post
Merci d'avance.
web.config
<system.web>
'<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>
</system.webServer>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
Global.asax.cs
public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes();
}
private void RegisterRoutes()
{
RouteTable.Routes.Add(new ServiceRoute("Scoring", new WebServiceHostFactory(), typeof(ScoringSvc)));
}
}
Code service
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class ScoringSvc
{
[OperationContract]
[WebInvoke
(Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
RequestFormat=WebMessageFormat.Json,
ResponseFormat=WebMessageFormat.Json)]
public string BOB(string jsonstring)
{
return "Received: " + jsonstring;
}
}
tête de requête Fiddler
Host: localhost
Content-Length: 20
Content-Type: application/json; charset=UTF-8
corps demande
{"Name":"Frank"}
réponse brute de Fiddler
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 12
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Mon, 21 Mar 2011 21:31:14 GMT
"Received: "
Oublié de mentionner, la solution utilise IIS 7 pour le serveur web et non le serveur de débogage apnet. – Grogh