Exemplo n.º 1
0
        /// <summary>
        /// 设定查询的总记录数,从消息头
        /// </summary>
        /// <param name="info"></param>
        /// <param name="isOverwrite"></param>
        public static void AppendMessageHeaderResponse(ResponseHeaderInfo info, bool isOverwrite)
        {
            EntityXmlSerializer <ResponseHeaderInfo> se = new EntityXmlSerializer <ResponseHeaderInfo>();
            string dstr = se.SingleSerializer(info, string.Empty);

            AppendMessageHeader(SOD.QUERY_RESPONSE_INFO, dstr, isOverwrite);
        }
Exemplo n.º 2
0
 private void ValidateResponse(
     RequestHeaderInfo requestHeader, ResponseHeaderInfo responseHeader, ResponseBase response)
 {
     if (null == responseHeader)
     {
         throw new ResponseValidationException("response header is null");
     }
     if (responseHeader.CorellationId != requestHeader.CorellationId)
     {
         throw new ResponseValidationException("request and response correlation IDs doesn't match!");
     }
     ValidateResponseHeaderStatus(responseHeader, response);
 }
Exemplo n.º 3
0
 private void Dispose(bool disposing)
 {
     if (!this.disposed)
     {
         if (disposing)
         {
             CurQueryBehavior = _Old;
             MessageHeaderKey = _OldMessageHeaderKey;
             ResponseInfo     = null;
         }
         disposed = true;
     }
 }
        public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
        {
            string ctxt = string.Empty;
            var    re   = reply.Headers.FindHeader(SOD.QUERY_RESPONSE_INFO, SOD.MESSAGE_HEADER_NAME_SPACE);

            if (re >= 0)
            {
                ctxt = reply.Headers.GetHeader <string>(SOD.QUERY_RESPONSE_INFO, SOD.MESSAGE_HEADER_NAME_SPACE);
                EntityXmlSerializer <ResponseHeaderInfo> se = new EntityXmlSerializer <ResponseHeaderInfo>();
                ResponseHeaderInfo responseHeaderInfo       = se.SingleDeSerializer(ctxt, string.Empty);
                QueryBehaviorScope.ResponseInfo = responseHeaderInfo;
            }
            else
            {
                QueryBehaviorScope.ResponseInfo = null;
            }
        }
Exemplo n.º 5
0
        private void HandleSystemFailureResponse(ResponseHeaderInfo header)
        {
            SystemErrorInfo[] systemErrors = header.Status.SystemErrors;
            if (null == systemErrors)
            {
                throw new ArgumentNullException(
                          "invalid response: status is system failure, but SystemErrors property is not set");
            }
            string errorDetails = systemErrors.Aggregate <SystemErrorInfo, StringBuilder, string>(
                new StringBuilder(),
                (b, e) => b.AppendLine(e.Message + " - " + e.Description),
                b => b.ToString());

            throw new ResponseValidationException(
                      String.Format("response failed for operation: {0} with {1} error(s). {2}!",
                                    header.OperationName, header.Status.SystemErrors.Length,
                                    errorDetails));
        }
Exemplo n.º 6
0
        private void ValidateResponseHeaderStatus(ResponseHeaderInfo header, ResponseBase response)
        {
            StatusInfo status = header.Status;

            if (StatusCode.Success == status.Code)
            {
                return;
            }
            switch (header.Status.Code)
            {
            case StatusCode.Unsupported:
                throw new ResponseValidationException(
                          String.Format("{0} is not supported", header.OperationName));

            case StatusCode.SystemFailure:
                HandleSystemFailureResponse(header);
                break;

            case StatusCode.BusinessRuleFailure:
                HandleBusinessErrorResponse(response);
                break;
            }
        }
Exemplo n.º 7
0
 /// <summary>
 /// 设定查询的总记录数,从消息头
 /// </summary>
 /// <param name="info"></param>
 public static void AppendMessageHeaderResponse(ResponseHeaderInfo info)
 {
     AppendMessageHeaderResponse(info, false);
 }