SenseNet.Services.WebDav.Lock.HandleMethod C# (CSharp) Метод

HandleMethod() публичный Метод

public HandleMethod ( ) : void
Результат void
        public void HandleMethod()
        {
            GenerateLockResponse(_handler.GlobalPath, _handler.Context);
        }
        public static void GenerateLockResponse(string path, HttpContext context) 

Usage Example

Пример #1
0
        public void ProcessRequest(HttpContext context)
        {
            #region Debug

            string traceMessage = string.Concat("METHOD: ", context.Request.HttpMethod, " Path: '", context.Request.Path, "'", Environment.NewLine);
            traceMessage = string.Concat(traceMessage, "   Authenticated: ", HttpContext.Current.User.Identity.IsAuthenticated.ToString(), ", ", "UserName: "******"   HEADERS: ", Environment.NewLine);

            foreach (var x in context.Request.Headers.AllKeys)
            {
                traceMessage = string.Concat(traceMessage, string.Format("      {0}={1}", x, context.Request.Headers[x]));
                traceMessage = string.Concat(traceMessage, Environment.NewLine);
            }

            System.Diagnostics.Debug.Write(traceMessage);

            #endregion

            context.Response.TrySkipIisCustomErrors = true;
            context.Response.Headers.Add("MicrosoftSharePointTeamServices", "14.0.0.5128");

            // check authentication
            if (DwsHelper.CheckVisitor())
            {
                return;
            }

            Path = context.Request.Path;

            if (Path.Contains(PortalContext.InRepositoryPageSuffix))
            {
                Path = "";
            }

            if (Path.ToLower().EndsWith(".content"))
            {
                Path       = Path.Remove(Path.LastIndexOf('.'));
                WebdavType = WebdavType.Content;
            }
            else if (Path.ToLower().EndsWith(".aspx"))
            {
                WebdavType = WebdavType.Page;
            }
            else if (Path.ToLower().EndsWith("ctd.xml"))
            {
                WebdavType = WebdavType.ContentType;
            }

            // LATER: do not handle specific types in current version
            switch (WebdavType)
            {
            case WebdavType.File:
            case WebdavType.Folder:
                break;

            default:
                context.Response.StatusCode = 200;
                context.Response.Flush();
                context.Response.End();
                return;
            }

            Path = Path.Replace("//", "/");
            Path = Path.TrimStart('/');

            // switch by method type - see RFC 2518
            try
            {
                switch (context.Request.HttpMethod)
                {
                case "OPTIONS":
                {
                    var o = new Options(this);
                    o.HandleMethod();
                    break;
                }

                case "PROPFIND":
                {
                    var pf = new Propfind(this);
                    pf.HandleMethod();
                    break;
                }

                case "GET":
                {
                    var g = new Get(this);
                    g.HandleMethod();
                    break;
                }

                case "HEAD":
                {
                    var h = new Head(this);
                    h.HandleMethod();
                    break;
                }

                case "PUT":
                {
                    var p = new Put(this);
                    p.HandleMethod();
                    break;
                }

                case "PROPPATCH":
                {
                    var pp = new Proppatch(this);
                    pp.HandleMethod();
                    break;
                }

                case "MKCOL":
                {
                    var md = new MkCol(this);
                    md.HandleMethod();
                    break;
                }

                case "MOVE":
                {
                    var m = new Move(this);
                    m.HandleMethod();
                    break;
                }

                case "DELETE":
                {
                    var d = new Delete(this);
                    d.HandleMethod();
                    break;
                }

                case "TRACE":
                {
                    var t = new Trace(this);
                    t.HandleMethod();
                    break;
                }

                case "LOCK":
                {
                    var l = new Lock(this);
                    l.HandleMethod();
                    break;
                }

                case "UNLOCK":
                {
                    var ul = new UnLock(this);
                    ul.HandleMethod();
                    break;
                }

                case "POST":
                {
                    Context.Response.StatusCode = 404;
                    context.Response.Flush();
                    break;
                }

                default:
                {
                    context.Response.StatusCode = 501;         // not implemented
                    break;
                }
                }

                context.Response.End();
            }
            catch (System.Threading.ThreadAbortException)
            {
                throw;
            }
            catch (Exception ex)
            {
                SnLog.WriteException(ex, null, EventId.Services,
                                     properties: new Dictionary <string, object> {
                    { "Path", Path }, { "Global path", GlobalPath }
                });

                try
                {
                    Context.Response.StatusCode = 404;
                    context.Response.Flush();
                }
                catch
                {
                    // last catch, can be suppressed
                }
            }
        }
All Usage Examples Of SenseNet.Services.WebDav.Lock::HandleMethod