在ASP.NET MVC中,当使用SignalR时,有时可能会遇到一个名为"Access to XMLHttpRequest at 'url' from origin 'url' has been blocked by CORS policy"的错误。这个错误是由于浏览器的同源策略引起的,表示浏览器不允许跨域请求。
要解决这个问题,可以按照以下步骤进行操作:
Install-Package Microsoft.AspNet.Cors
App_Start
文件夹下的Startup.Auth.cs
文件,并在ConfigureAuth
方法中添加以下代码:app.UseCors(CorsOptions.AllowAll);
WebApiConfig.cs
文件中添加以下代码,以允许跨域请求:config.EnableCors();
[EnableCors(origins: "*", headers: "*", methods: "*")]
特性,如下所示:[EnableCors(origins: "*", headers: "*", methods: "*")]
public class ChatHub : Hub
{
// Hub methods...
}
这将允许来自任何来源的跨域请求。
$.connection.hub.url
设置为正确的URL。例如:$.connection.hub.url = "http://localhost:1234/signalr";
请根据您的实际情况更改URL。
这些步骤将解决"Access to XMLHttpRequest at 'url' from origin 'url' has been blocked by CORS policy"错误,并允许在ASP.NET MVC中使用SignalR进行跨域通信。