【问题标题】:Asp.Net Core 2.0 HTTP -> HTTPS on KestrelAsp.Net Core 2.0 HTTP -> Kestrel 上的 HTTPS
【发布时间】:2019-10-10 12:48:01
【问题描述】:

我正在学习基于 Web 的编程,目前选择在 Asp.Net Core 2.0 上工作。 我已经成功创建了一个具有 2 层 Controllers Home & API 的 Web 应用程序。 Home 控制器直接与我的视图交互,而 API 控制器是使用我的 Home 控制器中的 GetAsync、PostAsync、PutAsync 等调用的。 最近我决定将此应用程序移至 HTTPS。了解了自签名证书并成功运行它,但我的 API 变得无法访问。

关闭 SSL 后,我仍然可以使用 Postman 调用我的 API。

我曾经使用这个 URI 调用我的 API:http://localhost:5667/api/WebApi

  var response = client.GetAsync(“SomeApi”)
    response.Wait();

现在我尝试使用 URI:https://localhost:5667/api/WebApi,但在 response.Wait(). 处中断

请给点建议。提前致谢

根据要求:这是我的 Startup.cs 的一部分

services.AddMvc(
   options =>
   {
       options.SslPort=5667;
       options.Filters.Add(new RequireHttpsAttribute());
    }
 );

 services.AddAntiforgery(
  options => 
  {
        options.Cookie.Name=“_af”;
        options.Cookie.HttpOnly = true;
        options.Cookie.SecurePolicy=CookieSecurePolicy.Always;
        options.HeaderName=“X-XSRF-TOKEN”;
     }
   )

【问题讨论】:

    标签: c# asp.net-core


    【解决方案1】:

    HTTP 和 HTTPS 不能通过同一端口提供服务。如果您的 localhost HTTP 端点在 5667 上,那么您的 HTTPS 端点很可能在 5668 上 - 尽管您可以在 Kestrel 将在启动时登录的信息中自行检查端口号。

    在生产中,HTTP 通常通过端口 80 提供服务,而 HTTPS 通过端口 443 提供服务。如果您没有另外指定,这些是默认设置。

    另外,您可能需要考虑在您的 Configure 块中启用 HTTPS redirection

    app.UseHttpsRedirection();
    

    【讨论】:

    • 我完全放弃了 HTTP。所以主应用程序也在监听 HTTPS,而不是 HTTP 和 HTTPS 的组合。感谢您的快速回复。 ?
    • 如果您可以编辑您的问题以包含相关的启动代码,将会很有帮助。否则只能做出这样的假设。
    • 我现在在手机上,在火车上。我一到办公室就会这样做。谢谢马特约翰逊
    • 我怀疑是上下文同步问题,但我不知道您是否不向我们展示您的 api 端的代码。
    猜你喜欢
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 2018-02-20
    • 2019-05-09
    • 1970-01-01
    相关资源
    最近更新 更多