我有像
这样的方法的wcfVoid finalize(string jsonstring);
我使用请求url,如finalize / {json}
但是,如果用json调用它,它会给出错误的请求原因,如:等等
如何修复
这是我用于方法的代码
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
UriTemplate = "FinalBooking/{BookingJsonString}")]
public int Finalize(string JsonString)
{
int result; // 1 success , 0 faill
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
Routess routes =
(Routess)json_serializer.DeserializeObject(JsonString);
using (XEntities context = new XEntities())
{
result = context.usp_Final(routes.TypeID, routes.regID, routes.CycleID, routes.DateTime,
routes.LocationID, routes.PatID, routes.PO, routes.BTID, routes.DID);
}
return result;
}
}
和Data的例子是简单的JSON字符串,如
{"DateTime":"03/09/2012 09:00","CycleID":6,"BTID":31,"DiseaseID":814,"LocID":36,"PatID":13,"PO":1,"TypeID":744,"rID":-1}
祝你好运
答案 0 :(得分:0)
将JSON字符串添加到网址时,是否对其进行了网址编码?如果网址是使用C#创建的,那么您可以使用HttpServerUtility.UrlEncode()或javascript中的内容,escape()
如果您可以在发送时显示该网址,那将会很有帮助。目前尚不清楚URL是否是问题,或WCF中的内容。
编辑:
查看您发布的代码,我注意到您的UriTemplate与您的方法参数名称不匹配:
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
UriTemplate = "FinalBooking/{BookingJsonString}")]
public int Finalize(string JsonString)
BookingJsonString
与JsonString
。
UriTemplate
有两种绑定模式:“Bind By Name”,名称应该匹配,“Bind By Position”,它忽略名称,只是通过参数索引。我似乎无法找到有关WCF WebInvoke使用的模式的任何信息,因此您可能需要尝试重命名模板或参数以匹配。