SignalR“访问XMLHttpRequest ..."ASP.NET MVC中的错误

编程入门 行业动态 更新时间:2024-10-25 18:25:24
本文介绍了SignalR“访问XMLHttpRequest ..."ASP.NET MVC中的错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我在ASP.NET中使用SignalR( Microsoft.AspNet.SignalR .SystemWeb v2.4.0和 Microsoft.AspNet.SignalR.Core v2.4.1.0 )MVC应用程序,在调试时,我在访问XMLHttpRequest3A%22demohub%22%7D%5D& __ = 1569323349167"rel =" nofollow noreferrer> demo/signalr/negotiate?clientProtocol=2.1&connectionData=%5B%7B%22name%22%3A来自来源" localhost:20700 "已被CORS策略阻止:所请求的资源上没有"Access-Control-Allow-Origin"标头." 错误.通过在网上查看,我已经在Startup.cs上完成了一些配置,如下所示,但是由于我不使用ASP.NET Core(我使用ASP.NET MVC),因此无法使用此配置.任何想法?

I use SignalR (Microsoft.AspNet.SignalR.SystemWeb v2.4.0 and Microsoft.AspNet.SignalR.Core v2.4.1.0) in an ASP.NET MVC application and when debugging, I encounter "Access to XMLHttpRequest at 'demo/signalr/negotiate?clientProtocol=2.1&connectionData=%5B%7B%22name%22%3A%22demohub%22%7D%5D&_=1569323349167' from origin 'localhost:20700' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource." error. By looking on the web, I have concluded some configurations on Startup.cs as shown below, but I cannot use this configuration as I do not user ASP.NET Core (I use ASP.NET MVC). Any idea?

public void ConfigureServices(IServiceCollection services) { services.addc .AddCors(options => { options.AddPolicy(_corsPolicyName, builder => { builder.WithOrigins( "localhost:5001", "localhost:4001", "localhost:44307", "localhost:44394" ) .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); }); services.AddSignalR(); }

更新:这是我用来解决该问题的配置:

Update: Here is my configuration to fix the problem:

Startup.cs:

Startup.cs:

using Microsoft.Extensions.DependencyInjection; using Microsoft.Owin; using Owin; [assembly: OwinStartup(typeof(Demo.Web.UI.App_Start.Startup))] namespace Demo.Web.UI.App_Start { public class Startup { public void Configuration(IAppBuilder app) { app.MapSignalR(); } } }

web.config:

web.config:

<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="localhost:20700"/> <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS"/> <add name="Access-Control-Allow-Headers" value="Content-Type"/> </customHeaders> </httpProtocol> </system.webServer>

推荐答案

我设法使其正常运行,我已将源代码发布在GitHub github/jonathanlarouche/stackoverflow_q58027442

I've managed to make it work, i've published the source on on GitHub github/jonathanlarouche/stackoverflow_q58027442

先决条件软件包是:具有以下Nuget软件包的Asp.Net Web应用程序: Microsoft.AspNet.SignalR.Core 2.4.1 Microsoft.AspNet.SignalR.JS 2.4.1 Microsoft.AspNet.SignalR.SystemWeb 2.4.0 Microsoft.Owin.Security 2.1.0 Microsoft.Owin 4.0.0

Prerequisites packages are : Asp.Net Web Application with the following Nuget packages : Microsoft.AspNet.SignalR.Core 2.4.1 Microsoft.AspNet.SignalR.JS 2.4.1 Microsoft.AspNet.SignalR.SystemWeb 2.4.0 Microsoft.Owin.Security 2.1.0 Microsoft.Owin 4.0.0

web.config < system.webServer> 节点. 重要访问控制权限凭据 在使用 Allow-Origin

<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="localhost:20700" /> <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" /> <add name="Access-Control-Allow-Headers" value="Content-Type" /> <add name="Access-Control-Allow-Credentials" value="true"/> </customHeaders> </httpProtocol> </system.webServer>

Startup.cs 配置文件

public class Startup { public void Configuration(IAppBuilder app) { app.MapSignalR(); } }

在Git解决方案中,我已将我的应用程序配置为在端口 49611 下运行,然后将Html页面发布到在端口 20700 下运行的空网站.现在,SignalR请求通过端口49611传递,并且CORS正常工作.

In the Git solution, I've configured my Application to run under port 49611, then i've published the Html page to a empty website running under port 20700. SignalR requests now pass on port 49611 and CORS are working.

SignalR客户端HTML :(从 localhost:20700/或 localhost:49611/)

SignalR Client Html: (Working when running from localhost:20700/ or localhost:49611/)

<script type="text/javascript" src="/Scripts/jquery-1.6.4.min.js"></script> <script type="text/javascript" src="/Scripts/jquery.signalR-2.4.1.min.js"></script> <script type="text/javascript" src="localhost:49611/SignalR/hubs"></script> <script type="text/javascript"> ... var ChatProxy; function Connect() { ChatServerUrl = "localhost:49611/"; var ChatUrl = ChatServerUrl + "signalr"; //This will hold the connection to the signalr hub SignalrConnection = $.hubConnection(ChatUrl, { useDefaultPath: false }); ChatProxy = SignalrConnection.createHubProxy('ChatHub'); } ... </script>

下载存储库并尝试

更多推荐

SignalR“访问XMLHttpRequest ..."ASP.NET MVC中的错误

本文发布于:2023-11-12 07:41:32,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1580904.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:错误   quot   XMLHttpRequest   SignalR   MVC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!