本文整理汇总了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);
}