我们在服务器上托管了一个WCF Rest Json服务,它使用本机iPad应用程序。大多数用户,它在调用WCF服务时工作正常。但对于一些用户,我们发现WCF接收到已损坏或剪切的Json字符串。 Json字符串的某些部分被剪切,无法从服务端反序列化。
对于帐户创建问题,我们已将Web服务中的服务异常日志记录添加到记事本文件中。我们从记事本文件中获得了例外。现在我们可以看到这些用户缺少服务的参数。它会在反序列化参数时导致错误。我们需要检查应用程序端为什么参数变为空。现在,我们从" 50.143.85.75"获得了相同的用户帐户创建例外条目。 IP
我们有WCF Rest服务CreateUser"如下所示。我们正在从IOS应用程序中使用此服务。
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Json,
UriTemplate = "CreateUser/")]
[OperationContract]
CustomServiceResponse CreateUser(Stream userdetails);
方法实现代码如下所示。
public CustomServiceResponse CreateUser(Stream user)
{
var stream = new StreamReader(user);
string streamcontent = stream.ReadToEnd();
UserInformation userInformation = ConvertJSonToObject<UserInformation>(streamcontent);
}
以下是招标配置
<binding name="webHttpBindingStreamed"
transferMode="Streamed"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647"
openTimeout="00:25:00"
closeTimeout="00:25:00"
sendTimeout="00:25:00"
receiveTimeout="00:25:00"></binding>
</webHttpBinding>
现在服务将流转换为字符串并执行所有操作。但是有一段时间我们会遇到错误。 我们在反序列化失败时记录了streamcontent。当streamcontent没有包含完整的json字符串时,我们可以看到序列化失败。下面你可以看到我们得到异常时得到的json字符串。你可以看到第一个json字符串中缺少双引号和右括号以及某个字母(&#34; false&#34;)和从第二个json字符串跳过的右括号。
{"FirstName":"Donald","LastCBPaymentType":6,"AcceptEmail":true,"CellPhone":"111-111-6874","Position":"3","UserAccountDateTime":"\/Date(1457055496621+0800)\/","CBExpirationDate":"\/Date(1465862400000+0800)\/","Email":"test.test@gmail.com","Password":"test","IsNeedtoGiveFreeOneMonth":false,"LastName":"test","WBExpirationDate":null,"IpAddress":"72.188.215.34","CarrierNum":"4","EmpNum":"96874
{"Position":"4","Email":"Tim.rrrr@wnco.com","CellPhone":"111-11-6146","LastCBPaymentType":6,"EmpNum":"107333","FirstName":"Timothy","Password":"eeee","WBExpirationDate":null,"UserAccountDateTime":"\/Date(1457054214674+0800)\/","CarrierNum":"5","CBExpirationDate":"\/Date(1468281600000+0800)\/","AcceptEmail":true,"IpAddress":"73.209.67.242","LastName":"Hill","IsNeedtoGiveFreeOneMonth":fa
你知道为什么json字符串的某些部分被剪掉了吗? IOS方面是否存在序列化问题?