Javascript 带有web api的信号器,核心错误?
我在不同的项目中有一个web api和javascript客户端。API url为 客户端应用程序url为 如果两个url是相同的,则信号器正在工作。但如果来自不同url,则会出现核心错误“XMLHttpRequest无法加载。请求的资源上不存在“Access Control Allow Origin”标头。因此不允许访问源” 我的代码如下: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)
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);
}
}