从WCF Rest服务

时间:2016-03-04 06:20:49

标签: c# ios json wcf

我们在服务器上托管了一个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方面是否存在序列化问题?

0 个答案:

没有答案