无法在Blazro Webassembly中连接到SignalR

问题描述 投票:0回答:1

我正在尝试从blazor Webassembly客户端连接到SignalR服务,但是我认为这在CORS上失败。这是我的剃须刀文件中的代码。

m_connection = new HubConnectionBuilder()
    .WithUrl(url, options =>
    {
       options.AccessTokenProvider = () => Task.FromResult(userService.Token);
    })
   .WithAutomaticReconnect()
   .Build();
await m_connection.StartAsync();

然后在webassembly日志中,我看到以下错误:

无法从来源'http://localhost:5010'处获取'xxxx / negotiate?negotiateVersion = 1'处的访存,已被CORS策略阻止:对预检请求的响应未通过访问控制检查:否'Access-Control-Allow -Origin'标头出现在请求的资源上。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”,以在禁用CORS的情况下获取资源。

我在Blazor服务器配置中添加了以下CORS策略:

        app.UseResponseCompression();

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseBlazorDebugging();
        }
        else
        {
            app.UseExceptionHandler(@"/Error");
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();
        app.UseCookiePolicy();
        app.UseAuthentication();
        app.UseAuthorization();

        app.UseCors(policy => policy
            .WithOrigins("http://localhost:5010")
            .AllowAnyHeader()
            .AllowAnyMethod());

        app.UseClientSideBlazorFiles<Client.Program>();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
            endpoints.MapFallbackToClientSideBlazor<Client.Program>(@"index.html");
        });

任何人都知道什么地方可能出问题了?

signalr blazor webassembly
1个回答
0
投票

尝试以下过程:

1。

Install-Package Microsoft.AspNetCore.Cors -Version 2.2.0

2。

public void ConfigureServices(IServiceCollection services)
{

    services.AddCors(options =>
    {
        options.AddPolicy("CorsPolicy",
            builder => builder.AllowAnyOrigin()
            .AllowAnyMethod()
            .AllowAnyHeader());
    });
     .....
}

3。

public void Configure(IApplicationBuilder app, 
                     IHostingEnvironment env)    
{

   app.UseCors("CorsPolicy");
}

希望这有帮助...

© www.soinside.com 2019 - 2024. All rights reserved.