【问题标题】:Asp.Net Core 2.1 Angular app does not answer requestAsp.Net Core 2.1 Angular 应用程序不响应请求
【发布时间】:2019-01-23 23:36:59
【问题描述】:

我有使用 asp.net core 2.1 运行的 SPA Angular 6 应用程序。出乎意料的是,对 api 控制器的 http 请求永远不会得到答复。当我查看浏览器调试时,它将请求显示为“待处理”。所以我添加了一些中间件:

public static void UseRequestLogger(this IApplicationBuilder app) {

        app.Use(async (context, next) =>
        {
            var logger = context.RequestServices.GetService<ILogger<MyLoggerService>>();
            var id = Guid.NewGuid();

            logger.LogDebug($"starting request: {context.Request.Path}-{id}");
             await next();

            logger.LogDebug($"ending request: {context.Request.Path}-{id}");

        });
    }

然后我在 StartUp.cs 的 Configure 方法的顶部调用 app.UseRequestLogger()。当我的请求在浏览器中停留在“待处理”时,我注意到中间件从未被处理。我有点不知道从这里去哪里。如果中间件没有被命中,在此之前会发生什么,我该如何检查?

【问题讨论】:

  • 应用程序日志说什么?
  • @poke nothin'....一切正常,或者无论如何看起来都是这样。
  • 但是这些请求会到达服务器吗?
  • @poke 据我所知,没有。没有日志记录它到达服务器,但是如果我在 IIS 中终止应用程序池,我会收到 502 错误,所以它必须到达服务器的某些部分。
  • 所以你在 IIS 后面运行?那么 IIS 日志会说什么?任何请求都有效吗?如果您在没有 IIS 的情况下运行您的应用程序,它是否有效?

标签: asp.net-core


【解决方案1】:

对我来说相同的配置和相同的不可预测的行为。

除非使用托管在 IIS + FireFox 中的 API 进行调试(此处只有 Chrome 存在错误),或 API 自托管(通过 launchSettings.json)。

{
    ...
    "profiles": {
        "YourProjectName": {
            "commandName": "Project",
            "launchBrowser": true,
            "environmentVariables": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            },
            "applicationUrl": "http://localhost:10001"
        },
        "IIS": {
            "commandName": "IIS",
            "launchBrowser": true,
            "environmentVariables": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            }
        }
    }
    ...
}

我的建议是调试您的应用程序和自托管 api 之间的通信。 然后在生产中,您可以将 API 托管在 IIS 下,根据我的经验,这在发布模式下从未引起过问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-28
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 2021-01-28
    • 1970-01-01
    • 2020-12-03
    相关资源
    最近更新 更多