У меня есть интерфейс ниже, который определяет мои службы WCF. Иногда параметр «параметры» был нулевым, когда это вызывается. В других случаях это не так.
[ServiceContract]
public interface IContactRelationshipManager
{
[OperationContract]
[WebInvoke(
Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped)]
void SaveActivityLogEntry(SaveActivityLogEntryParameters parameters);
}
Вот мой раздел поведения в app.config (я запускаю это как службу Windows)
<behaviors>
<endpointBehaviors>
<behavior name="jsonBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ContactRelationshipManagerBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
Вот мой вызов JavaScript:
$.ajax(
{
type: "POST",
cache: false,
contentType: "application/json",
url: serviceCallUrl,
data: JSON.stringify(params),
success: callbackHandler
});
Результат JSON.stringify(params)
равен
"{" параметры ": {" ContactEmailAddress ":" blah@gmail.com " "LiasonsForContact": [25], "ActivityLogEntry": { "Дата": "/ Дата (1316634966273) /"," LiasonFK ": 25," TypeFK ": 1," MethodFK ": 3," Описание ":" ТТ " "ContactFK": 32}}}"
Есть ли что-то, что я делаю здесь не так на практике? Это прекрасно работает все время в Chrome и Firefox. Я также только что проверил это с Fiddler во время отладки службы, и параметр вернулся с нулевым значением при закрытом Fiddler и НЕ с нулевым значением при открытом Fiddler.