я получаю следующее сообщение об ошибке при попытке вызова метода сервера стороны от яваскрипта клиента через SignalR:SignalR CORS ошибка
XMLHttpRequest cannot load http://localhost:49679/signalr/send?transport=serverSentEvents&clientProtoc…XWYPNm9Av7oD1DiEodZenKiQdpQFWUqDJ9vD0UgrYc%2FjZs21i3&connectionData=%5B%5D. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access. The response had HTTP status code 500.
Я строй простой прототип, и это то, что у меня есть в моем классе Startup.cs в моем веб-сервере:
using Microsoft.AspNet.SignalR;
using Microsoft.Owin;
using Microsoft.Owin.Cors;
using Owin;
[assembly: OwinStartupAttribute(typeof(WebRTCSignalServer.Web.Startup))]
namespace WebRTCSignalServer.Web
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
//app.UseCors(CorsOptions.AllowAll);
//Add SignalR
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
// configure signalR
HubConfiguration hubConfiguration = new HubConfiguration()
{
EnableJavaScriptProxies = false,
EnableDetailedErrors = true
};
//GlobalHost.HubPipeline.AddModule(new ErrorHandlingPipelineModule());
// Run the SignalR pipeline. We're not using MapSignalR
// since this branch already runs under the "/signalr"
// path.
map.RunSignalR(hubConfiguration);
});
ConfigureAuth(app);
}
}
}
Это Javascript signalr код клиента:
var connection = $.hubConnection('http://localhost:49679/signalr', { useDefaultPath: false });
console.log(connection);
connection.stateChanged(function() {
console.log('stateChanged.... state=' + connection.state);
});
connection.connectionSlow(function() {
console.log('connectionSlow.... state=' + connection.state);
});
connection.reconnecting(function() {
console.log('reconnecting.... state=' + connection.state);
});
connection.reconnected(function() {
console.log('reconnected.... state=' + connection.state);
});
connection.disconnected(function() {
console.log('disconnected.... state=' + connection.state);
});
connection.error(function (error) {
console.log('error.... state=' + connection.state);
});
var webRTCSignalServerHub = connection.createHubProxy('webrtcsignalserver');
console.log(webRTCSignalServerHub);
connection.start().done(function(){
webRTCSignalServerHub.invoke('register', 'wkst0314');
});
Может кто-нибудь объяснить, почему это происходит и как его исправить? Я последовал этому примеру в документах SignalR, чтобы включить CORS, но он не работает для меня. Не уверен, что это важно, но я пытаюсь это сделать в Chrome: http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client#crossdomain
Заранее спасибо за помощь.
У меня была такая же ошибка, и я пытался выяснить, где я испортил CORS, и затем нашел этот ответ. Оказывается, у меня также было неправильное имя моего концентратора. Сообщение об ошибке действительно вводит в заблуждение. – Hawk
Пожалуйста, разместите свой код решения. – Jacob