Opc.Ua.EndpointBase.CreateFault C# (CSharp) Method

CreateFault() protected static method

Creates a fault message.
protected static CreateFault ( IServiceRequest request, Exception exception ) : ServiceFault
request IServiceRequest The request.
exception System.Exception The exception.
return ServiceFault
        protected static ServiceFault CreateFault(IServiceRequest request, Exception exception)
        {
            DiagnosticsMasks diagnosticsMask = DiagnosticsMasks.ServiceNoInnerStatus;

            ServiceFault fault = new ServiceFault();

            if (request != null)
            {
                fault.ResponseHeader.Timestamp     = DateTime.UtcNow;
                fault.ResponseHeader.RequestHandle = request.RequestHeader.RequestHandle;

                if (request.RequestHeader != null)
                {
                    diagnosticsMask = (DiagnosticsMasks)request.RequestHeader.ReturnDiagnostics;
                }
            }

            ServiceResult result = null;

            ServiceResultException sre = exception as ServiceResultException;

            if (sre != null)
            {
                result = new ServiceResult(sre);

                Utils.Trace(
                    Utils.TraceMasks.Service, 
                    "Service Fault Occured. Reason={0}", 
                    result);
            }
            else
            {
                result = new ServiceResult(exception, StatusCodes.BadUnexpectedError);
                Utils.Trace(exception, "SERVER - Unexpected Service Fault: {0}", exception.Message);
            }                               

            fault.ResponseHeader.ServiceResult = result.Code;

            StringTable stringTable = new StringTable();

            fault.ResponseHeader.ServiceDiagnostics = new DiagnosticInfo(
                result, 
                diagnosticsMask, 
                true, 
                stringTable);

            fault.ResponseHeader.StringTable = stringTable.ToArray();
 
            return fault;
        }

Usage Example

コード例 #1
0
 /// <summary>
 /// Saves an exception as response.
 /// </summary>
 /// <param name="e">The exception.</param>
 private IServiceResponse SaveExceptionAsResponse(Exception e)
 {
     try {
         return(EndpointBase.CreateFault(m_request, e));
     } catch (Exception e2) {
         return(EndpointBase.CreateFault(null, e2));
     }
 }