RegisterThrowingInheritanceSecurityRulesWhenOverridingMembers对于我的学校项目,我使用的是MVC项目自带的默认AccountController注册功能://POST:/Account/Register[HttpPost][AllowAnonymous][ValidateAntiForgeryToken]publicasyncTaskRegister(RegisterViewModelmodel){if(ModelState.IsValid){varuser=newApplicationUser(){UserName=model.UserName};varresult=awaitUserManager.CreateAsync(user,model.Password);如果(result.Succeeded){awaitSignInAsync(user,isPersistent:false);返回RedirectToAction("索引","主页");}else{添加错误(结果);}}//如果我们走到这一步,有些东西失败了,重新显示表单returnView(model);但是当我单击表单中的注册按钮时,我得到:覆盖方法的安全可访问性必须与被覆盖方法的安全可访问性匹配我用谷歌搜索发现添加[SecurityCritical]应该可以修复它,但你不能添加它到一个异步任务。还发现添加[assembly:SecurityRules(SecurityRuleSet.Level1)]应该可以,但也不起作用:'Microsoft.AspNet.Identity.TaskExtensions+CultureAwaiter`1.UnsafeOnCompleted(System.Action)'。覆盖方法的安全可访问性必须与被覆盖方法的安全可访问性相匹配。]Microsoft.AspNet.Identity.UserManager`2。CreateAsync(TUser用户,字符串密码)+0Admin.Controllers.d__8.MoveNext()+198System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)+93System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)+52System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult异步结果)+84System.Web.Mvc.Async.c__DisplayClass37.b__36(IAsyncResult异步结果)+17System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult)(异步结果)+10System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()+49System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResultasyncResult)+32System.Web.Mvc.Async.AsyncInvocationWithFilters.b__3d()+50System.Web.Mvc.Async.c__DisplayClass46.b__3f()+225System.Web.Mvc.Async.c__DisplayClass33.b__32(IAsyncResultasyncResult)+10System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResultasyncResult)+10System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()+49System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResultasyncResult)+34System.Web.Mvc.Async.c__DisplayClass2b.b__1c()+26System.Web.Mvc.Async.c__DisplayClass21.b__1e(IAsyncResultasyncResult)+100System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResultasyncResult)+10System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()+49系统。Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResultasyncResult)+27系统tem.Web.Mvc.Controller.b__1d(IAsyncResultasyncResult,ExecuteCoreStateinnerState)+13System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResultasyncResult)+36System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()+54System.Web.Mvc.Controller.EndExecuteCore(IAsyncResultasyncResult)+39System.Web.Mvc.Controller.b__15(IAsyncResultasyncResult,Controller控制器)+12System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResultasyncResult)+28System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()+54System.Web.Mvc.Controller.EndExecute(IAsyncResultasyncResult)+29System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResultasyncResult)+10System.Web.Mvc.MvcHandler.b__5(IAsyncResultasyncResult,ProcessRequestStateinnerState)+21System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResultasyncResult)+36System.Web.Mvc.Async.WrappedAsyncResultBase`1.End()+54System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResultasyncResult)+31System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult结果)+9System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+6System.7Web.HttpApplication.ExecuteStep(IExecutionStepstep,Boolean&completedSynchronously)+155程序集只有在GAC注册后才完全受信任如果您的程序集是私有的,则它是部分信任和透明的(透明行为的示例)。由于您的程序集是私有程序集,因此DotNetCLR会忽略[SecurityCritical]。因此,如果您计划将程序集保密并以中等信任度运行它,则您不能覆盖或访问[SecurityCritical]成员。如何在VisualC#中将一个程序集安装到全局程序集缓存中以上是C#学习教程:Registerthethrowninheritancesecurityruleswhenoverridemembers分享的所有内容,如果对大家有用还需要了解更多关于C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: