【问题标题】:ASP.NET Core Controller scaffolding: certificate issueASP.NET Core 控制器脚手架:证书问题
【发布时间】:2017-06-13 21:13:54
【问题描述】:

这与my other question有关。

大部分脚手架问题都已解决,但出现与证书相关的错误:

在 appsettings.json 我有以下内容:

"Kestrel": {
    "Endpoints": {
      "Localhost": {
        "Address": "127.0.0.1",
        "Port": "53688"
      },
      "LocalhostHttps": {
        "Address": "127.0.0.1",
        "Port": "44384",
        "Certificate": "HTTPS"
      }
    }
  },

在 appsettings.Development.json 中:

"Certificates": {
    "HTTPS": {
      "Source": "Store",
      "StoreLocation": "LocalMachine",
      "StoreName": "My",
      "Subject": "CN=localhost",
      "AllowInvalid": true
    },

环境就是发展:

为什么要求生产证书?

为什么我需要脚手架证书?

【问题讨论】:

    标签: asp.net-core ssl-certificate visual-studio-2017 asp.net-mvc-scaffolding asp.net-core-2.0


    【解决方案1】:

    Microsoft/EF here 记录了此问题。

    以下是他们文档的直接复制和粘贴(上面链接)。

    ASP.NET Core 2.0 和 Web 工具已知问题

    尝试应用 EF 迁移或使用代码生成时出现证书错误

    问题:

    当尝试应用 EF 迁移或使用代码生成在 ASP.NET Core 2.0 应用程序中构建代码时,您会收到错误消息:“在当前环境(生产)的配置中找不到名为“HTTPS”的证书。

    解决方法:

    启动开发者命令提示符,设置环境变量 ASPNETCORE_ENVIRONMENT=Development 然后用这个环境变量集启动 VS

    另外,我不认为您需要设置 SSL 来搭建脚手架。如果您不需要 SSL,我会禁用它并尝试链接文档建议的解决方法,而不管项目属性中当前显示的当前调试环境变量如何。希望对您有所帮助。

    【讨论】:

    • 现在我收到以下错误:“无法从根提供商解析范围服务'...上下文'”
    • @Alex : 查看相关的 Stack Overflow 线程 here
    • 实际上我认为即使在开发过程中也有充分的理由始终使用 SSL 运行。设置起来并不难,为什么不呢?
    【解决方案2】:

    如果您仔细研究一下文档,您会发现 Kestrel 不支持通过配置文件设置 HTTPS 端点。 Github asp.net/security 中也有一个问题深入讨论了这一点。您可以按照此模式在 Program.cs 文件中进行设置....

    public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }
    
        public static IWebHost BuildWebHost(string[] args)
        {
            IHostingEnvironment env = null;
    
            return WebHost.CreateDefaultBuilder(args)
                  .UseStartup<Startup>()
                  .ConfigureAppConfiguration((hostingContext, config) =>
                  {
                      env = hostingContext.HostingEnvironment;
    
                      config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                              .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
    
                      if (env.IsDevelopment())
                      {
                          var appAssembly = Assembly.Load(new AssemblyName(env.ApplicationName));
                          if (appAssembly != null)
                          {
                              config.AddUserSecrets(appAssembly, optional: true);
                          }
                      }
    
                      config.AddEnvironmentVariables();
    
                      if (args != null)
                      {
                          config.AddCommandLine(args);
                      }
                  })
                  .UseKestrel(options =>
                  {
                      if (env.IsDevelopment())
                      {
                          options.Listen(IPAddress.Loopback, 44321, listenOptions =>
                          {
                              listenOptions.UseHttps("testcert.pfx", "ordinary");
                          });
                      }
                      else
                      {
                          options.Listen(IPAddress.Loopback, 5000);
                      }
                  })
                  .Build();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-11-16
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多