J'ai l'interface ci-dessous qui définit mes services WCF. Parfois, le paramètre 'parameters' a été nul quand on l'appelle. D'autres fois, ce n'est pas le cas.
[ServiceContract]
public interface IContactRelationshipManager
{
[OperationContract]
[WebInvoke(
Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped)]
void SaveActivityLogEntry(SaveActivityLogEntryParameters parameters);
}
Voici ma section comportements dans le app.config (je suis en cela comme un service Windows)
<behaviors>
<endpointBehaviors>
<behavior name="jsonBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ContactRelationshipManagerBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
Voici mon appel javascript:
$.ajax(
{
type: "POST",
cache: false,
contentType: "application/json",
url: serviceCallUrl,
data: JSON.stringify(params),
success: callbackHandler
});
Le résultat de JSON.stringify(params)
est
"{" parameters ": {" ContactEmailAddress ":" [email protected] "," LiasonsForContact ": [25], "ActivityLogEntry": {"Date": "/ Date (1316634966273) /", "LiasonFK": 25, "TypeFK": 1, "MethodFK": 3, "Description": "tt", "ContactFK": 32} }} "
Y at-il quelque chose que je fais mal ici en pratique? Cela fonctionne bien tout le temps en chrome et firefox. J'ai aussi testé ceci avec Fiddler pendant le débogage du service et le paramètre est revenu à zéro avec Fiddler fermé et non nul quand Fiddler est ouvert.
Le problème est que si je Fiddler alors mon service WCF reçoit le paramètre correctement. Je ne peux pas utiliser Fiddler pour tester parce que cela a un impact sur le résultat. – skeletank