我正在使用SignalR来更新我的仪表板页面。本页由Angular 5和web Api开发。出于安全目的,My angular应用程序将API请求发送到充当代理服务器的小型Web应用程序,并将端口更改为实际的API服务器。
我的代理服务器在端口7030上运行,API服务器在端口7050上运行。
我的SignalR Hub也在API服务器上运行。在我的Angular页面中,如果我通过端口7050(API服务器)连接到集线器,它工作正常,并且一旦数据库中发生任何更改,它就会更新。但是,如果我改变连接到端口7030(代理服务器)它会给出WebSocket握手错误,并且在浏览不同的页面后它变得很慢,几乎在20秒后它反映了数据库的变化!
WebSocker连接到' ws:// localhost:7030 / signalr / connect?transport = webSockets& clientProtocol = 1.5& connectionToken =& connectionData =& tid = 4'失败 WebSocket握手:net :: ERR_CONNECTION_RESET
这是我在代理Web应用程序中用作port srcipt处理程序的代码:
protected override async System.Threading.Tasks.Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
var scheme = ConfigurationManager.AppSettings["Scheme"];
var host = ConfigurationManager.AppSettings["Host"];
int port;
int.TryParse(ConfigurationManager.AppSettings["Port"], out port);
var forwardUri = new UriBuilder(request.RequestUri)
{
Scheme = scheme,
Host = host,
Port = port
};
System.Net.ServicePointManager.ServerCertificateValidationCallback =
((sender, certificate, chain, sslPolicyErrors) => true);
request.RequestUri = forwardUri.Uri;
request.Headers.Host = host;
var response = await base.SendAsync(request, cancellationToken);
return response;
}
这个问题只在我使用HTTP协议时才存在。一旦我通过https浏览我的网站,SignalR工作正常!