2015-01-03 1 views
1

я получаю следующее сообщение об ошибке при попытке вызова метода сервера стороны от яваскрипта клиента через 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

Заранее спасибо за помощь.

ответ

1

Я смог понять это. Имя используемого мной хакера signalR было неправильным, и именно поэтому эта ошибка возникла. После исправления имени узла все работало, как ожидалось.

+0

У меня была такая же ошибка, и я пытался выяснить, где я испортил CORS, и затем нашел этот ответ. Оказывается, у меня также было неправильное имя моего концентратора. Сообщение об ошибке действительно вводит в заблуждение. – Hawk

+0

Пожалуйста, разместите свой код решения. – Jacob