React-Native Signalr 连接在调试模式下工作,在发布模式下失败

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

我有一个 ASP.NET 6.0 Core Web Api,并将 Signalr 发布到 Windows Server 2017 上的 IIS。然后我有一个 React-Native 移动应用程序,它使用 @microsoft/signalr 连接到 SignalR 中心。当移动应用程序通过 Android 模拟器和我的 Android 手机在调试模式下运行时,它可以毫无问题地连接到 Signalr。一切都很完美。现在,当我尝试在发布模式下运行相同的应用程序时,它不起作用并且无法连接。请任何想法/帮助,我们将不胜感激。

Program.cs 主要


            builder.Services.AddCors(options =>
            {
                options.AddDefaultPolicy(builder =>
                {
                    builder.AllowAnyOrigin()
                           .AllowAnyMethod()
                           .AllowAnyHeader();
                           //.AllowCredentials()
                           //.SetIsOriginAllowed((host) => true);
                });
            }
            );

            // Add services to the container.
            builder.Services.AddControllers()
                            .AddJsonOptions(options =>
                            {
                                options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
                                //options.JsonSerializerOptions.PropertyNamingPolicy = null;
                            });


            builder.Services.AddEndpointsApiExplorer();
            builder.Services.AddSwaggerGen();
            builder.Services.AddSignalR();
            builder.Logging.ClearProviders();
            Serilog.ILogger logger = new AppLogger(builder.Configuration).Logger;
            builder.Logging.AddSerilog(logger, true);

            var app = builder.Build();
            
            // Configure the HTTP request pipeline.
            if (app.Environment.IsDevelopment() || app.Environment.IsProduction())
            {
                app.UseSwagger();
                app.UseSwaggerUI();
            }

            //app.UseHttpsRedirection();

            app.UseAuthentication();
            app.UseAuthorization();

            app.UseCors();
            app.UseWebSockets();

            app.MapControllers();
            app.MapHub<FacilityHub>("/facility-hub");

            app.Run();

当应用程序在发布模式下运行时,我运行以下命令查看日志。

npx 反应本机 log-android

npx react-native run-android --mode release

这是移动应用程序在发布模式下运行时日志中的错误。

这是移动应用程序在调试模式下运行时日志中的错误。

asp.net react-native asp.net-core signalr
1个回答
0
投票

在Release模式下,Android对不安全的http请求有限制。我们只需要在配置文件中添加一些配置即可。

AndroidManifest.xml 文件:

  1. 确保您已添加使用网络的权限。

    <uses-permission android:name="android.permission.INTERNET" />
    
  2. 在应用程序标签中设置以下属性:

    <application
        ...
        android:usesCleartextTraffic="true"
        ...>
        ...
     </application>
    
  3. 如果你想在原生代码中使用已弃用的HttpClient来发送http请求,则需要添加以下标签:

    <uses-library android:name="org.apache.http.legacy" android:required="false"/>
    

相关链接:行为更改:针对 API 级别 28+ 的应用程序

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