session 终止 (翻译TR069 3.7.1.4 & 3.7.2.4)

    3.7.1.4 会话终止

  当遇到以下所有情况时,CPE必须终止会话。

  1、ACS不再有请求发给CPE,只有当最近的HTTP应答是空的CPE才能做出此结论;

  2、CPE不再有请求发给ACS且已经发给ACS空的HTTP应答同时HoldRequests为0(HoldRequests为0 指的是CPE不再有请求发给ACS),如果这种情况没有遇到,CPE不再有请求或应答,它必须发出一个空的HTTP POST,这样就会满足该条件;

   注意:HoldRequests SOAP包头元素是过时的,所以ACS不期望发送它。但是,ACS可能会发它,所以CPE仍然需要支持它。

  3、CPE接收来源于ACS的所有outstanding 回应;

  4、作为先前的请求的应答,CPE已经向ACS发送了所有outstanding回应

   如果在等待至少30s后仍然没有收到ACS的回应,CPE认为该session不成功终止。如果CPE没有收到HTTP回应,CPE不能在同一个会话中重传相关HTTP请求。

   如果CPE接收到带有错误代码的SOAP包(错误代码不包括8005,即retry request),CPE必须认为该session不成功结束;

   如果CPE接收到的HTTP 应答的soap包不符合XML格式,或者SOAP的结果是无效的,或者是包括一个错误,或者CPE认为是违反协议的,CPE必须认为该session是不成功结束。

   如果CPE接收到的HTTP应答中包含错误状态码(4**或者是5**),CPE必须认为该session是不成功结束。注意CPE允许含有401的错误码(

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以对这段代码进行如下的优化: ``` if (theData.Id.IsNullOrEmpty()) { theData.Id = Guid.NewGuid().ToSequentialGuid(); if (theData.ifNeedVerifyCode == true && SessionHelper.Session["verifyCode"].IsNullOrEmpty()) { return Error("请先发送验证码"); } if (theData.ifNeedVerifyCode == true && SessionHelper.Session["verifyCode"].ToString() != theData.verifyCode) { return Error("验证码不正确"); } var unweightedCount = _wTapplicationBusiness.GetIQueryable() .Where(a => a.Carno == theData.Carno && a.ExpectedDate == theData.ExpectedDate && a.WeightTime.IsNullOrEmpty()) .Count(); if (unweightedCount > 0) { return Error("该车在该送货日期存在未过磅的信息,请过磅后再新增数据"); } _wTapplicationBusiness.AddData(theData); _wTapplicationBusiness.GetLogger().WriteOperateLog("WTapplication信息添加", "id:" + theData.Id, true); } else { var unweightedCount = _wTapplicationBusiness.GetIQueryable() .Where(a => a.Carno == theData.Carno && a.ExpectedDate == theData.ExpectedDate && a.WeightTime.IsNullOrEmpty() && a.Id != theData.Id) .Count(); if (unweightedCount > 0) { return Error("该车在该送货日期存在未过磅的信息,请过磅后再新增数据"); } _wTapplicationBusiness.UpdateData(theData); _wTapplicationBusiness.GetLogger().WriteOperateLog("WTapplication信息修改", "id:" + theData.Id, true); } ``` 主要的优化点如下: 1. 合并了两个 `if` 语句,使得代码更加简洁。 2. 重命名了 `UnWightCount` 变量为 `unweightedCount`,符合命名规范。 3. 将 `_wTapplicationBusiness.GetIQueryable()` 的查询条件提取出来,避免重复写代码。 4. 将新增和修改的代码分别写在了两个分支中,使得代码更加清晰易懂。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值