小编mis*_*sha的帖子

为什么在授权之前执行onAuthorization?

我正在尝试做一些自定义授权,所以我创建了一个覆盖该OnAuthorization方法的控制器.我还将该Authorize属性应用于此控制器.问题是为什么这个OnAuthorization方法被称为BEFORE基本表单认证过程?

我想在用户通过身份验证后授权用户.我错过了什么吗?

这是代码:

[Authorize]
    public class AuthorizationController : Controller
    {
        protected override void OnAuthorization(AuthorizationContext filterContext)
        {
            base.OnAuthorization(filterContext);

            if (filterContext == null)
            {
                throw new ArgumentNullException("filterContext");
            }

            List<string> allowedControllers = new List<string>() { "SecurityController" };
            List<string> allowedActions = new List<string>() { "Index" };

            string controllerName = filterContext.Controller.GetType().Name;
            string actionName = filterContext.ActionDescriptor.ActionName;

            if (!allowedControllers.Contains(controllerName)
            || !allowedActions.Contains(actionName))
            {
                filterContext.Result = View("UnauthorizedAccess");
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我测试的控制器是这样的:

public class SecurityController : AuthorizationController
{

    public ActionResult Index()
    {
        return View(); …
Run Code Online (Sandbox Code Playgroud)

authentication asp.net-mvc authorization

14
推荐指数
1
解决办法
3万
查看次数

应用程序事件日志超过允许的最大数

不知何故,应用程序事件日志计数最终达到18,446,744,073,709,551,499.当我想使用事件查看器查看事件时,这会导致MMC管理单元失败,从而产生System.OverflowException(对于Int64,值太大或太小.).有什么想法,还是我应该清除日志?

windows event-log event-viewer

8
推荐指数
1
解决办法
9067
查看次数

按代码填充ITemplate

有没有办法填写ITemplate代码?我想我有一个UpdatePanel:

UpdatePanel upnl = new UpdatePanel();
// What should be done next?
//upnl.ContentTemplate = ...
Run Code Online (Sandbox Code Playgroud)

它的结果相当于:

<asp:UpdatePanel runat="server" ID="upnl">
    <ContentTemplate>
    test
    </ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)

c# asp.net

1
推荐指数
1
解决办法
5816
查看次数

调用基础构造函数时重用初始化方法

我想使用构造函数初始化派生类中的受保护成员,但由于我调用base()我不能调用this(),这使我的一些调用"闻":

public class ABase
    {
        public object Param1 { get; set; }
        public object Param2 { get; set; }
        protected object Param3 { get; set; }

        public ABase()
            : this(null, null)
        { }

        public ABase(object param1)
            : this(param1, null)
        { }

        public ABase(object param1, object param2)
        {
            Param1 = param1;
            Param2 = param2;
        }
    }

    public class A : ABase
    {
        public A()
        { InitParam3(); }

        public A(object param1)
            : base(param1)
        { InitParam3(); }

        public A(object param1, object param2)
            : …
Run Code Online (Sandbox Code Playgroud)

c# oop constructor

1
推荐指数
1
解决办法
968
查看次数