从SignalR Hub调用方法时出现问题。调用失败。承诺被拒绝

时间:2018-10-24 09:00:34

标签: asp.net angular signalr signalr-hub signalr.client

我一直在解决这个问题已有一个多星期了,因为我对.NET和角度环境还很陌生,所以找不到解决此问题的方法。另外,我在互联网上找不到适合我问题的解决方案。

我有一项服务,该服务每秒通过REST API向我发送数据。我想在客户端中检索此数据,而不必连续重新加载整个页面。因此,我选择了SignalR。

到目前为止,一切正常,并且到集线器的连接已建立。但是,当我尝试从中心调用该方法时,收到一条错误消息:

Invoking 'GetPerformanceSnapshotData' failed.  Rejecting promise... 
Promise rejected.

ErrorObservable {_isScalar: false, error: Error: An error occurred while sending the request.
    at Object.error (http://localhost:4200/scrip......, scheduler: undefined}
error: Error. An error occurred while sending the request: An error occurred while sending the request. at Object.error (http://localhost:4200/...)...

这是我在客户端上的呼叫方法:

public GetPerformanceSnapshotData() {
    this.connect().then((connection) => {
      this.invoke("GetPerformanceSnapshotData").then((data: string) => {
        console.log(data);
      }).catch(error => {
        this.dialogService.showError(error);
        return Observable.throw(error);
      });
    }).catch(error => {
      this.dialogService.showError(error);
      return Observable.throw(error);
    });
  }
}

服务器端方法如下:

namespace ...
{
    using System.Threading.Tasks;
    using System.Net.Http;
    using Microsoft.AspNet.SignalR;

    public class PerformanceSnapshotHub : Hub
    {
        public async Task<string> GetPerformanceSnapshotData()
        {
            using (var client = new HttpClient(new HttpClientHandler { UseDefaultCredentials = true }))
            {
                var response = await client.GetAsync("http://localhost:8080/api/PerformanceSnapshot");
                response.EnsureSuccessStatusCode();
                return await response.Content.ReadAsStringAsync();
            }
        }
    }
}

我不明白怎么了。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

我完成了。代码没有错。问题是防火墙出于任何原因阻止了对服务的请求。打开后,一切正常。

不幸的是,“网络”选项卡显示得不是很清楚,我偶然遇到了这个问题。