簡體   English   中英

如何在signalR C#angular5上訪問-控制-允許-起源

[英]How can I Access-Control-Allow-Origin on signalR C# angular5

我正在使用angular 5和C#API,並且正在嘗試實現SignalR的推送通知; 並且我停留在此錯誤“ Access-Control-Allow-Origin”

我在angular5上使用ng-signalr

在此處輸入圖片說明

我做錯了什么,我不知道在哪里

startup.cs

using Owin;
using System.Web.Http;
using System.Web.Http.Cors;
using Microsoft.AspNet.SignalR;

namespace App5
{
    public class Startup
    {
        // This code configures Web API. The Startup class is specified as a type
        // parameter in the WebApp.Start method.
        public void Configuration(IAppBuilder appBuilder)
        {

            // Configure Web API for self-host. 
            HttpConfiguration config = new HttpConfiguration();


            var cors = new EnableCorsAttribute("*", "*", "*");
            config.EnableCors(cors);
            //  Enable attribute based routing
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}/{action}/{code}",
                defaults: new { id = RouteParameter.Optional , action = RouteParameter.Optional, code = RouteParameter.Optional}
            );

            appBuilder.UseWebApi(config);
            appBuilder.MapSignalR();
        }
    }
}

Ng2SignalRHub.cs

using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace App5
{
    [Authorize]
    [HubName("Ng2SignalRHub")]
    public class Ng2SignalRHub : Hub
    {
        public override Task OnConnected()
        {

            Trace.TraceInformation("Ng2SignalRHub - OnConnected");

            var user = GetAuthenticatedUser();

            Clients.All.OnUserConnected(user);

            return base.OnConnected();
        }

        private string GetAuthenticatedUser()
        {
            var username = Context.QueryString["user"];
            if (string.IsNullOrWhiteSpace(username))
                throw new System.Exception("Failed to authenticate user.");

            Trace.TraceInformation("GetAuthenticatedUser :" + username);

            return username;
        }
    }

}

請任何人對此問題有解決方案,謝謝

看一下此鏈接,看看是否有幫助: https : //github.com/aspnet/SignalR/issues/1400

由於SignalR在asp.net core 2.1中處於預覽狀態,因此必須確保客戶端軟件包的所有版本都匹配。 您還應該配置CORS策略

在ConfigureServices中:

        services.AddCors(options => options.AddPolicy("CorsPolicy", builder =>
        {
            builder
                .AllowAnyMethod()
                .AllowAnyHeader()
                .WithOrigins("http://localhost:50000");
        }));
       services.AddSignalR();

在配置中:

app.UseCors("CorsPolicy");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM