在部署ASP.NET Core应用程序到azure并打开该网站时,我发现以下错误:

InvalidOperationException:在上找不到"UserSecretsIdAttribute"

异常详细信息还包括错误发生在启动时.cs在这行代码中:

建设者AddUserSecrets();

谢谢

推荐答案

最近刚刚更新了用户机密模块.版本1.0.1和更高版本现在要求您为用户秘密的id指定程序集级属性,或者作为后备,就像以前在project.json中一样.

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

您可以在中定义机密id.csproj是这样的:

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

这将生成以下程序集级属性.或者,您当然也可以自己添加,例如添加到Startup.cs中,而不是将其添加到.csproj文件中:

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

此外,你应该使用:

builder.AddUserSecrets<Startup>();

它将在给定类型的程序集中搜索该属性,在本例中,我使用了Startup类.

Note: this will be deprecated in 2.0: (1.0.2 and 1.1.1 have marked it obsolete)

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.然后(如注释所示)返回一个关于缺少属性的错误,因为他们不想抱怨项目.json不再流行了,因为它正被弃用.

Asp.net相关问答推荐

IISExpress未在ARM64 Mac/.NET 4.8上启动

Firefox 和 Chrome 之间 1 像素的行高差

IIS Request.UserHostAddress 返回 IPV6 (::1),即使禁用了 IPV6

如何通过 Asp.net 中的命令参数传递多个值?

asp.net 中的 Eval() 有什么用

如何使用自动生成的列隐藏 ASP.NET GridView 中的列?

Razor 主机工厂错误

如何以编程方式将标签的前景色设置为其默认值?

如何找出我的 Windows 域上托管 LDAP 的服务器?

为应用程序池Classic .NET AppPool提供服务的进程与 Windows 进程激活服务发生了致命的通信错误

缩小 ASP.NET 应用程序的 Html 输出

如何使用 WebRequest 发布数据并从网页获取响应

为什么混合 Razor Pages 和 VueJs 是一件坏事?

在资源文件中使用 HTML

在 Visual Studio 2010 中随机禁用编辑 aspx/ascx 文件?

在 ASPNET 标识 2.0 中禁用用户

ExecuteReader:连接属性尚未初始化

如何在 asp.net 中实现Access-Control-Allow-Origin标头

ASP.NET 邮箱验证器正则表达式

如何使用实体框架执行原始 SQL 查询而无需使用模型?