SignalR出现跨域协商请求错误
Cross Domain Negotiation request error with SignalR
我有一个ASP.NET Web Api项目,其中实现了SignalR。在Stratup类中我使用CorsOptions.AllowAll。在WebApiConfig类中,我还使用EnableCorsAttribute(""、""answers"*")。我在服务器位置发布了这个WebApi项目(http://192.168.9.6:3030)。但是在尝试使用$.hubConnection("http://192.168.9.6:3030/signalr")我从一个javascript客户端得到这样的消息:"协商请求时出错。"
如果我使用http://localhost:8080从我的电脑我可以连接到SignalR。
这是启动类
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Map("/signalr", map =>
{
app.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration();
map.RunSignalR(hubConfiguration);
});
}
}
集线器级
public class SetupHub : Hub
{
public void Send(string name, string message)
{
var msg = String.Format("{0}: {1} : {2}", name, message, DateTime.Now);
Clients.All.addMessage(msg);
}
}
WebApiConfig类
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
var cors = new EnableCorsAttribute("*", "*", "*");
// config.EnableCors();
config.EnableCors(cors);
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
全球ASAX
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
JavaScript客户端
var connection = $.hubConnection("http://192.168.9.6:3030/signalr");
var setupHubProxy = connection.createHubProxy('SetupHub');
setupHubProxy.on('addMessage', function (msg) {
alert(msg);
});
connection.start()
.done(function () {
console.log('connected');
})
.fail(function (a) {
console.log('not connected' + a);
});
如有任何帮助,我们将不胜感激。
我在web.config 中有它
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
也许这对你也有用。
错误在这一行:
app.UseCors(CorsOptions.AllowAll);
它将是
map.UseCors(CorsOptions.AllowAll);
相关文章:
- ajax请求的顺序总是不同的
- Meteor如何接收HTTP请求
- 有没有一种方法可以防止img get请求使用css或js发生
- 从ajax请求中获取javascript对象
- JSONP请求返回结果,但也触发error_callback
- 在localhost Dev Box上测试JSONP请求的最佳方式
- Ajax请求文档就绪会导致jquery加载缓慢
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 在openshift node js应用程序中获取请求
- 反应路由器弄乱了请求网址
- 在我的情况下,如何进行http请求
- 使用密码对话框Javascript请求帮助
- servlet中的请求对象,而不是从jsp接收参数值
- 否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上
- JavaScript代码未正确检查ajax请求
- node.js请求数据事件未在CORS ajax调用中触发
- 如何检测第三方广告服务器请求
- 在Rails中更新Div,而不更改更新请求后的视图
- SignalR出现跨域协商请求错误