首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Autofac异常-安全关键与2级安全透明度

Autofac异常-安全关键与2级安全透明度
EN

Stack Overflow用户
提问于 2018-11-26 13:10:38
回答 1查看 807关注 0票数 1

我正在更新一个较旧的项目,以使用.net 471,而不是462,以及所有nuget包的最新版本。

我有很多版本控制问题要解决,但我终于得到了一个构建的项目。

但是,当我执行程序时,我会得到以下异常:

安全透明方法( 'Autofac.Integration.WebApi.RegistrationExtensions.RegisterApiControllers(Autofac.ContainerBuilder,System.Reflection.Assembly[])访问安全关键类型'Autofac.Builder.IRegistrationBuilder`3‘的尝试失败。

紧接着是

程序集'Autofac.Integration.WebApi,Version=3.0.0.0,Culture=neutral,PublicKeyToken=17863af14b0044da‘用AllowPartiallyTrustedCallersAttribute标记,并使用级别2安全透明模型。级别2透明度导致AllowPartiallyTrustedCallers程序集中的所有方法默认为安全透明的,这可能是此例外的原因。

在调用时会发生这种情况:

代码语言:javascript
复制
builder.RegisterApiControllers(ThisAssembly);

其中构建器是一个Autofac ContainerBuilder

问题

就像主题说的,这一定是SecurityCriticalAllowPartiallyTrustedCallersAttribute之间的某种冲突,但是我不知道我是如何介绍它的,也不知道什么是最好的动作,所以

怎么回事,我怎么解决这个问题?

更新

对于JLe的建议,我删除了webapi引用,转而使用了webapi2。我的日志记录设置有一个相关的错误,但由于这不是“核心功能”,所以我暂时跳过了它(我需要回到它),看看我会得到什么。我到了浏览器屏幕,它给了我以下内容:

方法'my.namespace.MyController+d__6.MoveNext()‘是安全透明的,但是安全关键类型的成员。

我尝试将[SecurityCritical]放在控制器类上,但显然不允许在具有该属性的类中执行异步调用:

错误CS4031异步方法不允许出现在具有“SecurityCritical”或“SecuritySafeCritical”属性的接口、类或结构中。

但我无法修复这个问题,因为我正在对后端(NServicebus ESB)执行异步调用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-28 07:38:14

确保您使用的是nuget.org/packages/Autofac.WebApi2,如果是针对WebApi2的话,而不是只使用Autofac.WebApi的旧名称(但是名称空间是相同的,Autofac.Integration.WebApi)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53481867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档