微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net – InvalidOperationException:在程序集上找不到“UserSecretsIdAttribute”

将ASP.NET Core应用程序部署到天蓝色并打开网站后,会收到以下错误信息:

InvalidOperationException: Could not find ‘UserSecretsIdAttribute’ on
assembly ‘******,Version=1.0.0.0,Culture=neutral,
PublicKeyToken=null’.

异常详细信息还包括代码行在Startup.cs发生错误

builder.AddUserSecrets();

谢谢

解决方法

最近有一个用户密码模块的更新。版本1.0.1及以上版本要求您为用户密码的id指定一个程式集属性,或者指定在之前在project.json中的方式。

以下是GitHub:https://github.com/aspnet/Announcements/issues/209的公告

你可以这样定义.csproj中的秘密ID:

<PropertyGroup>
  <UserSecretsId>aspnet-TestApp-ce345b64-19cf-4972-b34f-d16f2e7976ed</UserSecretsId>
</PropertyGroup>

这将生成以下组件级属性。或者,而不是将其添加到.csproj文件中,您当然可以自己添加它。到Startup.cs:

[assembly: UserSecretsId("aspnet-TestApp-ce345b64-19cf-4972-b34f-d16f2e7976ed")]

另外,你应该使用:

builder.AddUserSecrets<Startup>();

它将在给定类型的程序集中搜索属性在这种情况下,我使用了Startup类。

注意:这将在2.0中弃用:(1.0.2和1.1.1已经标记为已过时)

builder.AddUserSecrets();

我检查了source code用户密码配置,并调用AddUserSecrets(),而不使用类型:

var attribute = entryAssembly.GetCustomAttribute<UserSecretsIdAttribute>();
if (attribute != null)
{
     return AddUserSecrets(configuration,attribute.UserSecretsId);
}

// try fallback to project.json for legacy support
try
{
     var fileProvider = configuration.GetFileProvider();
     return AddSecretsFile(configuration,PathHelper.GetSecretsPath(fileProvider));
}
catch
{ }

// Show the error about missing UserSecretIdAttribute instead an error about missing
// project.json as PJ is going away.
throw MissingAttributeException(entryAssembly);

它试图在您的程序集中找到UserSecretsId属性,否则,检查是否可以在project.json中找到它。然后(as commented)返回一个关于缺少的属性错误,因为它们不想再投诉project.json,因为它已被弃用。

原文地址:https://www.jb51.cc/aspnet/252663.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐