Signalr 使用不同的IP地址连接信号集线器和客户端

Signalr 使用不同的IP地址连接信号集线器和客户端,signalr,Signalr,工作于2019年 我是新加入SignalR的,我已经编写了集线器/客户端应用程序,但我无法在本地家庭局域网上使用不同IP上的两台PC 所以我回到了基础,加载了示例聊天应用程序,但我也有同样的问题 我正在使用github的演示聊天示例 PC A(我的工作PC)用作运行聊天中心(192.168.0.2)的信号器中心 运行聊天“Windows窗体示例”客户端的PC B(我的笔记本电脑)(192.168.0.9) 防火墙:我在两台PC上都允许端口52995的入站和出站规则 轮毂连接: string ip

工作于2019年

我是新加入SignalR的,我已经编写了集线器/客户端应用程序,但我无法在本地家庭局域网上使用不同IP上的两台PC

所以我回到了基础,加载了示例聊天应用程序,但我也有同样的问题

我正在使用github的演示聊天示例

PC A(我的工作PC)用作运行聊天中心(192.168.0.2)的信号器中心

运行聊天“Windows窗体示例”客户端的PC B(我的笔记本电脑)(192.168.0.9)

防火墙:我在两台PC上都允许端口52995的入站和出站规则

轮毂连接:

string ip = "localhost";
string port = "52995";

var url = new Uri($"http://{ip}:{port}/chat");

App.HubConn = new HubConnectionBuilder()
           .WithUrl(url, options =>
           {                   
           })
           .Build();
如果我在与集线器(本地主机)相同的PC上运行Winforms客户端,则一切正常,但在笔记本电脑上,我得到的错误是:

System.Net.HttpRequestException. Response code does not indicate success: 400 (Bad Request)
为清晰起见,Winforms聊天客户端应用程序允许您在文本框中输入url:

http://localhost:52995/chat   ----> client running on localhost   -> works
http://192.168.0.2:52995/chat ----> client running on 192.168.0.9 -> error

我已经试着解决这个问题一天多了,为什么这样不行呢?

回答我自己的问题

我的用例有点不同

我需要在一台Windows10 PC上运行服务器集线器,它的本地(LAN)客户端不超过12个(所以它都是本地局域网,没有云)。Kestral似乎是本例中使用的服务器

我了解到IIS Express只处理本地主机的流量

为了进行测试,我在VitrualBox虚拟机(用于服务器集线器)中运行了一个Visual Studio副本,这意味着VS使用的是IIS Express,因此不允许本地主机之外的通信量&因此是400

让它工作起来

使用CLI启动web应用程序-这将使用Kestral作为唯一的web服务器(通常IIS代理进出Kestral的http流量)

dontnet运行
我还将托管模型设置为OutOfProcess(在csproj中)


netcoreapp2.2
工艺流程图
虽然我不确定这实际上有什么不同,因为dotnetrun似乎在这种托管模式下工作

dontnet run <your app name>
<PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>OuOfProcess</AspNetCoreHostingModel>
</PropertyGroup>