当前位置: 首页>>代码示例>>C#>>正文


C# HttpContextBase.EnsurePermitted方法代码示例

本文整理汇总了C#中System.Web.HttpContextBase.EnsurePermitted方法的典型用法代码示例。如果您正苦于以下问题:C# HttpContextBase.EnsurePermitted方法的具体用法?C# HttpContextBase.EnsurePermitted怎么用?C# HttpContextBase.EnsurePermitted使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在System.Web.HttpContextBase的用法示例。


在下文中一共展示了HttpContextBase.EnsurePermitted方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ProcessRequest

        public virtual void ProcessRequest(HttpContextBase context)
        {
            ApiRequest request = null;
            MatchedRoute route = null;
            ApiResponse response = new ApiResponse();
            Type[] knownTypes = new Type[0];

            if (RequestPassesSslCheck(context))
            {
                try
                {
                    route = this.GetRequestRoute(context);
                    request = this.GetRequestReader(context, route, readers).ReadRequest(context, route.RouteType, response);

                    // Permitted?
                    IPermission failedOn;
                    if (context.EnsurePermitted(route.RouteType, out failedOn))
                    {
                        knownTypes = route.RouteType.GetCustomAttributes(typeof(KnownTypeAttribute), true)
                            .Cast<KnownTypeAttribute>()
                            .Select(a => a.Type)
                            .ToArray();

                        ApiResult valid = request.Validate();

                        if (valid.Success)
                        {
                            // Do it.
                            ApiActionResult result = request.Do();
                            response.Success = result.Success;
                            response.Reason = result.Reason;
                            response.Value = result.Value;
                        }
                        else
                        {
                            response.Success = false;
                            response.Reason = valid.Reason;
                        }
                    }
                    else
                    {
                        response.Success = false;
                        response.Reason = "Access denied.";
                        response.Allowed = false;
                        response.StatusCode = 401;
                    }
                }
                catch (InvalidRequestTypeException ex)
                {
                    response.Success = false;
                    response.Reason = ex.Message;
                    response.StatusCode = 400;
                }
                catch (Exception ex)
                {
                    response.Success = false;
                    response.StatusCode = 500;

                    if (context.Request.IsLocal)
                    {
                        response.Reason = String.Concat(ex.Message, "\n", ex.StackTrace);
                    }
                    else
                    {
                        response.Reason = "An internal server error occurred while processing your request.";
                    }
                }
            }
            else
            {
                response.Success = false;
                response.Reason = "A secure connection is required when making this request.";
                response.StatusCode = 403;
            }

            string id = context.Request.Headers["X-Request-Id"];
            id = !String.IsNullOrEmpty(id) ? id : "0";

            context.Response.AppendHeader("X-Response-Id", id);
            context.Response.StatusCode = response.StatusCode;

            this.GetResponseWriter(context, route, writers).WriteResponse(context, request, response, knownTypes);
        }
开发者ID:ChadBurggraf,项目名称:kayjax,代码行数:83,代码来源:KaysonHandler.cs


注:本文中的System.Web.HttpContextBase.EnsurePermitted方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。