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

vjrehmav  于 12个月前  发布在  .NET
关注(0)|答案(1)|浏览(156)

我有一个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 react-native log-android
npx react-native run-android --mode release
这里是日志中的错误时,移动的应用程序运行是释放模式。x1c 0d1x
这里是日志中的错误时,移动的应用程序运行是调试模式。

wvt8vs2t

wvt8vs2t1#

在Release模式下,Android对不安全的http请求有限制。我们只需要在配置文件中添加一些配置。
AndroidManifest.xml文件:
1.确保您已添加使用网络的权限。

<uses-permission android:name="android.permission.INTERNET" />

字符串
1.在应用程序标记中设置以下属性:

<application
    ...
    android:usesCleartextTraffic="true"
    ...>
    ...
 </application>


1.如果你想在本机代码中使用已弃用的HttpClient来发送http请求,你需要添加以下标签:

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


相关链接:Behavior changes: apps targeting API level 28+

相关问题