【发布时间】:2010-10-29 08:31:14
【问题描述】:
我知道这里有问题问完全相同的问题,但是尽管我阅读了它们,但我仍然遗漏了一些东西,希望你能提供帮助!
很简单,使用VS添加的WCF模板!
界面:
[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);
}
});
我得到的错误是: 服务器在处理请求时遇到错误。异常消息是“值不能为空。参数名称:composite'。
所以这个值没有被传递,当它到达 WCF 服务时它为空。
*注意:我尝试过调用接受字符串并返回复合类型的方法,效果很好*
提前感谢您的帮助
【问题讨论】:
-
我也有同样的问题..你有解决方案吗?
-
如果你取消 if (composite.BoolValue) 你有同样的问题