Javascript 带有web api的信号器,核心错误?

Javascript 带有web api的信号器,核心错误?,javascript,asp.net-web-api,model-view-controller,signalr,Javascript,Asp.net Web Api,Model View Controller,Signalr,我在不同的项目中有一个web api和javascript客户端。API url为 客户端应用程序url为 如果两个url是相同的,则信号器正在工作。但如果来自不同url,则会出现核心错误“XMLHttpRequest无法加载。请求的资源上不存在“Access Control Allow Origin”标头。因此不允许访问源” 我的代码如下: public partial class Startup { public void Configuration(IAppBuilder app)

我在不同的项目中有一个web api和javascript客户端。API url为 客户端应用程序url为

如果两个url是相同的,则信号器正在工作。但如果来自不同url,则会出现核心错误“XMLHttpRequest无法加载。请求的资源上不存在“Access Control Allow Origin”标头。因此不允许访问源”

我的代码如下:

public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {

        app.Map("/signalr", map =>
        {
            map.UseCors(CorsOptions.AllowAll);
            var hubConfiguration = new HubConfiguration { };
            map.RunSignalR(hubConfiguration);
        });            

    }
}
在客户项目中,我这样打电话:

@{
    ViewBag.Title = "CORES";
}



<div class="container">
    <input type="text" id="message" />
    <input type="button" id="sendmessage" value="Send" />
    <input type="hidden" id="displayname" />
    <ul id="discussion"></ul>
</div>

@section scripts {
        <script src="~/Scripts/jquery.signalR-2.2.1.min.js"></script>
    <script src="http://localhost:55322/api/signalr/hubs"></script>
    <script>
        $(function () {

            $(function () {

                var hub = $.connection.chatHub;
                $.connection.hub.url = 'http://localhost:55322/api/signalr';


                $.connection.hub.start();
            });

            var chat = $.connection.chatHub;

            chat.client.hello = function () {
                console.log("Hello from ASP.NET Web API");
                alert('value :' );
            }

            chat.client.addNewMessageToPage = function (name, message) {
                $('#discussion').append('<li><strong>' + htmlEncode(name)
                    + '</strong>: ' + htmlEncode(message) + '</li>');
            };

            chat.client.getValue2 = function (result) {
                alert('value :' + result)
            };



            $('#displayname').val(prompt('Enter your name:', ''));
            $('#message').focus();


            $.connection.hub.start().done(function () {
                console.log("sss");

                $('#sendmessage').click(function () {
                    console.log("Hdone  ");

                    chat.server.getValue("userId")
                    .done(function (result) {
                       alert('value :'+ result)
                    });
                    chat.server.send($('#displayname').val(), $('#message').val());
                    $('#message').val('').focus();
                });
            });
        });
        function htmlEncode(value) {
            var encodedValue = $('<div />').text(value).html();
            return encodedValue;
        }
    </script>
}
@{
ViewBag.Title=“核心”;
}
    @节脚本{ $(函数(){ $(函数(){ var hub=$.connection.chatHub; $.connection.hub.url='0http://localhost:55322/api/signalr'; $.connection.hub.start(); }); var chat=$.connection.chatHub; chat.client.hello=函数(){ log(“来自ASP.NET Web API的你好”); 警报('值:'); } chat.client.addNewMessageToPage=函数(名称、消息){ $(“#讨论”)。追加(“
  • ”+htmlEncode(名称) +“:”+htmlEncode(消息)+“
  • ”); }; chat.client.getValue2=函数(结果){ 警报('值:'+结果) }; $('#displayname').val(提示('输入您的姓名:',''); $(“#消息”).focus(); $.connection.hub.start().done(函数(){ 控制台日志(“sss”); $('#sendmessage')。单击(函数(){ 控制台日志(“Hdone”); chat.server.getValue(“用户ID”) .完成(功能(结果){ 警报('值:'+结果) }); chat.server.send($('#displayname').val(),$('#message').val()); $('#message').val('.focus(); }); }); }); 函数htmlEncode(值){ var encodedValue=$('').text(value.html(); 返回编码值; } }
    枢纽

    公共类聊天中心:中心
    {
    私有静态IHubContext hubContext=GlobalHost.ConnectionManager.GetHubContext();
    公共空间
    {
    Clients.All.hello();
    }
    公共字符串getValue(字符串avlue)
    {
    返回“dd”+平均值;
    }
    public void GetValue2()
    {
    hubContext.Clients.All.getValue2(“helloo”);
    }
    公共静态void SayHello()
    {
    hubContext.Clients.All.hello();
    }
    公共无效发送(字符串名称、字符串消息)
    {
    Clients.All.addNewMessageToPage(名称、消息);
    }
    }
    

    如何解决此CORES错误?

    首先,它是CORS,其次,检查browser developer tools网络控制台,查看服务器正在发送哪些响应头,以确认服务器正在发送所有适当的
    访问控制允许-?
    headers@harishr如何允许cors用于信号这将帮助您,
     public class ChatHub : Hub
    {
    
        private static IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
    
        public void Hello()
        {
            Clients.All.hello();
        }
    
        public string getValue( string avlue)
        {
            return "dd" + avlue;
        }
    
        public void GetValue2()
        {
            hubContext.Clients.All.getValue2("hellooo");
        }
    
        public static void SayHello()
        {
            hubContext.Clients.All.hello();
        }
        public void Send(string name, string message)
        {
            Clients.All.addNewMessageToPage(name, message);
        }
    }