嗨,我正在尝试运行一个信号,并且通过一个控制台应用程序。 到目前为止这是我的代码
class Program
{
static IDisposable dis = null;
static void Main(string[] args)
{
try
{
dis = WebApp.Start<Startup>("http://localhost:10476");
Console.WriteLine("hi");
Console.ReadKey();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
if (dis != null)
dis.Dispose();
}
}
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
public class myHub : Hub
{
public void Hello()
{
Console.WriteLine("hi");
Clients.All.OK();
}
}
更新
这是我的客户代码
function send() {
var connection = $.hubConnection("http://localhost:10476");
var hub = connection.createHubProxy("myHub");
hub.on("OK", function () {
alert("HI");
});
connection.start({jsonp: true})
.done(function () {
console.log('connected');
hub.invoke("Hello");
})
.fail(function (a) {
console.log('not connected' + a);
});
}
注意:我的客户端和集线器是分开的(我希望客户端是浏览器扩展,而服务器是我计算机上的应用程序) 但是,当我调用此函数时,浏览器会在请求的资源上显示“No'Access-Control-Allow-Origin”标题。因此,不允许原点“http://localhost:63343”访问。 我的客户端代码是否正确?
答案 0 :(得分:0)
如果您未启用CORS,负责加载页面的SignalR服务器和Web服务器应该相同。如果您希望它们位于独立的Web应用程序中,则必须在SignalR应用程序中启用cors。为了在Startup.cs中执行此操作:
public void Configuration(IAppBuilder app)
{
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration { };
map.RunSignalR(hubConfiguration);
});
}
有关详细信息,请参阅以下链接:
https://cmatskas.com/signalr-cross-domain-with-cors/