Я знаю, что здесь есть вопросы, задающие точно то же самое, но, несмотря на то, что я читаю их, я все еще что-то упускаю, и, надеюсь, вы можете помочь!
Это очень просто, используя шаблон WCF, который добавленVS!
Интерфейс:
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat= WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped)]
CompositeType GetDataUsingDataContract(CompositeType composite);
Реализация:
public CompositeType GetDataUsingDataContract(CompositeType composite){
if (composite == null)
{
throw new ArgumentNullException("composite");
}
if (composite.BoolValue)
{
composite.StringValue += "Suffix";
}
return composite;
}
Javascript:
$.ajax({
type: "POST",
url: "http://localhost:1545/Service1.svc/GetDataUsingDataContract",
data: JSON.stringify(compType),
contentType: "application/json; charset=utf-8",
dataType: "json",
processdata: true,
success: function (msg) {
$("#txtTest").val(message.BoolValue + " : " + message.StringValue);
},
error: function (xhr, errorMsg, thrown) {
$("#error").html(xhr.responseText);
}
});
Ошибка, которую я получаю: сервер обнаружил ошибку при обработке запроса.Сообщение об исключении: «Значение не может быть нулевым.Имя параметра: составной '.
Таким образом, значение не передается, его значение равно нулю, когда оно попадает в службу WCF.
* Примечание. Я пытался вызывать методы, которые принимают строку и возвращаютсоставной тип, который отлично работает *
Спасибо заранее за вашу помощь