【问题标题】:Http Client Subscribe Never HitHttp 客户端订阅从不命中
【发布时间】:2020-02-07 02:20:18
【问题描述】:

我正在使用调用 c# 核心端点的 Angular 7。 http 请求位于 client.service.ts 中,并从我的 home.component.ts 中的按钮单击事件处理程序中调用。

subscribe 方法永远不会被调用。我过去曾收到过 Angular 的 http 请求,所以我不确定我在做什么不同。我想我已经尝试了 20 种不同的变体,但都无济于事,从未调用 subscribe 方法。

我知道 http 调用有效。被调用的c#核心服务接收到请求,返回对象值没有问题。但是在 Angular 应用中,订阅只是被跳过了。

这里是调用home.component.ts类中http客户端服务的方法:

    onClickSimpleBtn() {

    this.clientService.diffConfigsByObject().subscribe((report: Report) => {

        this.serviceName = report.serviceName;

    });
}

这里是client.service.cs中接收前面调用并执行http请求的方法:

    diffConfigsByObjectClean(): Observable<Report> {

    let url = `https://localhost:44392/DiffConfigsByObject`;

    return this.http.get<Report>(url);
}

接收c#端点如下(再次说明,这部分功能正常):

    [HttpGet]
    public Report Get()
    {
        var report = new Report();
        return report;
    }

请帮忙!!已经坚持了2天了。 如果需要任何其他代码,请随时询问。谢谢!

【问题讨论】:

  • 也许请求返回了错误?您在浏览器的“网络”选项卡下的调试器中看到了什么?
  • 检查控制台工具是否有错误或请求被 CORS 策略阻止。如果您使用的是 google chrome,请按 F12 打开控制台工具。
  • 谢谢大家。我是个白痴。应该在那里检查。我看到了错误。谢谢。我会结束这个问题。

标签: c# angular typescript httprequest angular7


【解决方案1】:

检查控制台后,似乎 CORS 仅阻止响应。奇怪的。我已安排启用 CORS,并且出站请求工作正常。但似乎返回值不起作用。我认为一旦对方服务接听了呼出电话,我就清楚 CORS 了。我猜错了。

解决办法是:

托管被调用端点的 c# 核心服务也需要 CORS 设置。到目前为止,我只在调用 Angular 服务上安排了 CORS。
接收 c# 服务需要以下内容:

    public void ConfigureServices(IServiceCollection services)
    {
        ...
        services.AddCors();
        ...
    }

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        ...

        app.UseCors(options =>
            options.WithOrigins("https://localhost:44395")
            .AllowAnyMethod()
            .AllowAnyHeader()
        );

        ...
    }

【讨论】:

    猜你喜欢
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 2017-12-01
    • 2023-04-03
    相关资源
    最近更新 更多