Exemplo n.º 1
0
    public VfsPathParserContext(PathParser parser, string[] pathElements, VfsEntity root)
    {
        this.Parser = parser;
        foreach (string element in pathElements)
        {
            this.RemainingPathElements.Enqueue(element);
        }
        this.SpecifiedPath = this.Parser.BuildAbsolutePathStringFromElements(pathElements);

        Exception = new VfsException(SpecifiedPath, "Unknown path parser error.");

        AddToEntityStack(root);
    }
Exemplo n.º 2
0
        public static void AuditException(IAuditor auditor, Exception exception, AuditLevel level, FileSystemTask context, AuditEvent eventId, string message)
        {
            if (!auditor.IsAuditEnabled(level, context))
            {
                return;
            }

            VfsException vfsException = exception as VfsException;

            if (vfsException != null)
            {
                //don't create duplicate or unneccessary entries
                if (vfsException.IsAudited || vfsException.SuppressAuditing)
                {
                    return;
                }
            }

            if (String.IsNullOrEmpty(message))
            {
                message = exception.ToString();
            }
            else
            {
                message = String.Format("{0}\n\n{1}", message, exception);
            }

#if !SILVERLIGHT
            if (exception.StackTrace == null)
            {
                //add stack trace, if not available yet
                message = String.Format("{0}\n{1}", message, Environment.StackTrace);
            }
#endif

            //submit incident
            auditor.Audit(level, context, eventId, message);

            //set audition flag
            if (vfsException != null)
            {
                vfsException.IsAudited = true;
            }
        }
Exemplo n.º 3
0
        protected T CreateFaultResult <T>(Exception exception, Func <int, VfsFault, T> func) where T : OperationResult
        {
            //set content type
            //Response.Headers.ContentType = new MediaType(VfsHttpHeaders.Default.VfsFaultContentType);

            //get exception
            VfsException ve    = exception as VfsException;
            VfsFault     fault = ve == null ? new VfsFault {
                Message = exception.Message
            }
                                  : VfsFault.CreateFromException(ve);


            int statusCode = 0;

            //set HTTP status code
            switch (fault.FaultType)
            {
            case VfsFaultType.ResourceNotFound:
            case VfsFaultType.TransferUnknown:
                //404
                return(func(404, fault));

            case VfsFaultType.ResourceAccess:
            case VfsFaultType.ResourceOverwrite:
            case VfsFaultType.ResourceLocked:
            case VfsFaultType.TransferError:
            case VfsFaultType.TransferStatusError:
            case VfsFaultType.DataBlockError:
            case VfsFaultType.ResourcePathInvalid:
                //forbidden
                return(func(403, fault));

            case VfsFaultType.Undefined:
                return(func(500, fault));

            default:
                string msg = String.Format("Exception contains unknown fault type [{0}]", fault.FaultType);
                throw new ArgumentOutOfRangeException("exception", msg);
            }
        }