升级Xamarin Forms项目中的nuget后,Android网络问题 [英] Android networking problems after upgrading nugets in Xamarin Forms project

查看:27
本文介绍了升级Xamarin Forms项目中的nuget后,Android网络问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个旧版Xamarin Forms项目.几个月不活动后,我必须对其进行一些更改.

I have a legacy Xamarin Forms project. After some months of inactivity I have to make some changes to it.

首先,我已经更新了nuget,但无法前进:我在nuget更新之后对其进行了测试,在IOS上它的工作时间比以前更早,但是在Android上,所有http请求都停止了工作.我总是总是立即返回任务已取消"异常(问题与时间无关,我在发送请求时立即得到了它.)

Firstly, I have updated nugets and I can not step forward: I tested it after nuget update, on IOS it worked as earlier, but on Android all http requests stopped working. I always get back 'Task was cancelled' exception immediatelly (the problem is not timeot related, I get it immediatelly when sending the request).

我环顾四周,但没有得到有关这种奇怪行为的信息.

I have look around the net but did not get and info about this weird behaviour.

这是我用来发出http请求的简单代码:

Here is the simple code I use to make my http requests:

private string FetchData(string requestURL)
        {
            var httpHandler = new HttpClientHandler
            {
                UseDefaultCredentials = false,
                Credentials = _credential
            };

            using (var httpClient = new HttpClient(httpHandler, false))
            {
                var response = httpClient.GetStringAsync(requestURL).Result;
                return response;
            }
        }

调用堆栈:

[0:] Fail: A task was canceled.
[0:]   at System.Diagnostics.DefaultTraceListener.Fail (System.String message, System.String detailMessage) [0x00000] in <ca7419b40e504a6dbe088f6fe95d09aa>:0 
  at System.Diagnostics.TraceListener.Fail (System.String message) [0x00000] in <ca7419b40e504a6dbe088f6fe95d09aa>:0 
  at System.Diagnostics.DefaultTraceListener.Fail (System.String message) [0x00000] in <ca7419b40e504a6dbe088f6fe95d09aa>:0 
  at System.Diagnostics.TraceInternal.Fail (System.String message) [0x00000] in <ca7419b40e504a6dbe088f6fe95d09aa>:0 
  at System.Diagnostics.TraceInternal.Assert (System.Boolean condition, System.String message) [0x00000] in <ca7419b40e504a6dbe088f6fe95d09aa>:0 
  at System.Diagnostics.Debug.Assert (System.Boolean condition, System.String message) [0x00000] in <ca7419b40e504a6dbe088f6fe95d09aa>:0 
  at projectx_Plus.Pages.LoginPage.<.ctor>b__3_0 (System.Object sender, System.EventArgs e) [0x00a9f] in <f1910371c2b04847a4cb7bfe1ad97f28>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.InvokeMoveNext (System.Object stateMachine) [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.InvokeAction (System.Object state) [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at System.Threading.Tasks.AwaitTaskContinuation.RunCallback (System.Threading.ContextCallback callback, System.Object state, System.Threading.Tasks.Task& currentTask) [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation.Run (System.Threading.Tasks.Task ignored, System.Boolean canInlineContinuationTask) [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at System.Threading.Tasks.Task.FinishContinuations () [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at System.Threading.Tasks.Task.FinishStageThree () [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at System.Threading.Tasks.Task.CancellationCleanupLogic () [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at System.Threading.Tasks.Task.TrySetCanceled (System.Threading.CancellationToken tokenToRecord, System.Object cancellationException) [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[TResult].SetException (System.Exception exception) [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at projectx_Plus.API.DataFetcher.AuthenticateUserAsync () [0x000db] in <f1910371c2b04847a4cb7bfe1ad97f28>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.InvokeMoveNext (System.Object stateMachine) [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at System.Threading.ExecutionContext.RunInternal (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, System.Object state, System.Boolean preserveSyncCtx) [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at System.Runtime.CompilerServices.AsyncMethodBuilderCore+MoveNextRunner.Run () [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at System.Threading.Tasks.SynchronizationContextAwaitTaskContinuation+<>c.<.cctor>b__7_0 (System.Object state) [0x00000] in <ff07eae8184a40a08e79049bbcb31a0e>:0 
  at Android.App.SyncContext+<>c__DisplayClass2_0.<Post>b__0 () [0x00000] in <3324153164274220ab14392825330ba2>:0 
  at Java.Lang.Thread+RunnableImplementor.Run () [0x00000] in <3324153164274220ab14392825330ba2>:0 
  at Java.Lang.IRunnableInvoker.n_Run (System.IntPtr jnienv, System.IntPtr native__this) [0x00000] in <3324153164274220ab14392825330ba2>:0 
  at Android.Runtime.DynamicMethodNameCounter.49 (System.IntPtr , System.IntPtr ) [0x00000] in <3324153164274220ab14392825330ba2>:0 

我在Visual Studio中启动应用程序时在输出窗口中发现了一些奇怪的条目,这些条目似乎与此问题有关:

I noticed some strange entries in output window at app startup in Visual Studio those seems to be related with this problem:

09-11 13:41:43.216 D/Mono    (18770): Loading reference 8 of netstandard.dll asmctx DEFAULT, looking for System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
09-11 13:41:43.219 D/Mono    (18770): Image addref System.Net.Http[0x7cbab75c80] (asmctx DEFAULT) -> System.Net.Http.dll[0x7cbab74800]: 2
09-11 13:41:43.219 D/Mono    (18770): Prepared to set up assembly 'System.Net.Http' (System.Net.Http.dll)
09-11 13:41:43.219 D/Mono    (18770): Assembly System.Net.Http[0x7cbab75c80] added to domain RootDomain, ref_count=1
09-11 13:41:43.220 D/Mono    (18770): AOT: image 'System.Net.Http.dll.so' not found: (null)
09-11 13:41:43.220 D/Mono    (18770): AOT: image '/Users/builder/jenkins/workspace/archive-mono/2019-02/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/System.Net.Http.dll.so' not found: (null)
09-11 13:41:43.220 D/Mono    (18770): Config attempting to parse: 'System.Net.Http.dll.config'.
09-11 13:41:43.220 D/Mono    (18770): Config attempting to parse: '/Users/builder/jenkins/workspace/archive-mono/2019-02/android/release/sdks/out/android-arm64-v8a-release/etc/mono/assemblies/System.Net.Http/System.Net.Http.config'.
09-11 13:41:43.220 D/Mono    (18770): Assembly Ref addref netstandard[0x7cbeb84400] -> System.Net.Http[0x7cbab75c80]: 2
09-11 13:41:43.220 D/Mono    (18770): Loading reference 0 of System.Net.Http.dll asmctx DEFAULT, looking for mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e
09-11 13:41:43.220 D/Mono    (18770): Assembly Ref addref System.Net.Http[0x7cbab75c80] -> mscorlib[0x7ccfdfdf00]: 118
Loaded assembly: System.Net.Http.dll [External]

这是我在项目中使用的nuget包:

Here are the nuget packages I use in the project:

<PackageReference Include="Acr.UserDialogs">
      <Version>7.0.4</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.AppCenter.Analytics">
      <Version>2.1.1</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.AppCenter.Crashes">
      <Version>2.1.1</Version>
    </PackageReference>
    <PackageReference Include="Microsoft.Bcl.Build">
      <Version>1.0.21</Version>
    </PackageReference>
    <PackageReference Include="Naxam.Mapbox.Droid">
      <Version>8.3.0</Version>
    </PackageReference>
    <PackageReference Include="Naxam.Mapbox.Droid.Custom">
      <Version>6.4.2</Version>
    </PackageReference>
    <PackageReference Include="Naxam.MapboxAnnotation.Droid">
      <Version>0.7.0</Version>
    </PackageReference>
    <PackageReference Include="Naxam.MapboxGestures.Droid">
      <Version>0.5.1</Version>
    </PackageReference>
    <PackageReference Include="Naxam.MapboxSdkCore.Droid">
      <Version>3.4.0</Version>
    </PackageReference>
    <PackageReference Include="Naxam.MapboxSdkGeojson.Droid">
      <Version>4.8.0.1</Version>
    </PackageReference>
    <PackageReference Include="Naxam.MapboxSdkServices.Droid">
      <Version>3.4.0</Version>
    </PackageReference>
    <PackageReference Include="NControl.Controls">
      <Version>0.9.4.1</Version>
    </PackageReference>
    <PackageReference Include="NGraphics">
      <Version>0.5.0</Version>
    </PackageReference>
    <PackageReference Include="Plugin.Share">
      <Version>7.1.1</Version>
    </PackageReference>
    <PackageReference Include="Syncfusion.Xamarin.Expander">
      <Version>17.2.0.51</Version>
    </PackageReference>
    <PackageReference Include="Syncfusion.Xamarin.SfAutoComplete">
      <Version>17.2.0.51</Version>
    </PackageReference>
    <PackageReference Include="Syncfusion.Xamarin.SfChart">
      <Version>17.2.0.51</Version>
    </PackageReference>
    <PackageReference Include="Syncfusion.Xamarin.SfComboBox">
      <Version>17.2.0.51</Version>
    </PackageReference>
    <PackageReference Include="Syncfusion.Xamarin.SfListView">
      <Version>17.2.0.51</Version>
    </PackageReference>
    <PackageReference Include="Syncfusion.Xamarin.SfSparkline">
      <Version>17.2.0.51</Version>
    </PackageReference>
    <PackageReference Include="Xam.Plugin.DeviceInfo">
      <Version>4.1.1</Version>
    </PackageReference>
    <PackageReference Include="Xam.Plugin.ExternalMaps">
      <Version>4.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xam.Plugins.Messaging">
      <Version>5.2.0</Version>
    </PackageReference>
    <PackageReference Include="Xam.Plugins.Settings">
      <Version>3.1.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Arch.Core.Common">
      <Version>1.1.1.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Arch.Core.Runtime">
      <Version>1.1.1.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Arch.Lifecycle.Common">
      <Version>1.1.1.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Arch.Lifecycle.Extensions">
      <Version>1.1.1.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Arch.Lifecycle.Runtime">
      <Version>1.1.1.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.Animated.Vector.Drawable">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.Annotations">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.Compat">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.Core.UI">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.Core.Utils">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.CustomTabs">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.Design">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.Fragment">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.Media.Compat">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.Transition">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.v4">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.v7.AppCompat">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.v7.CardView">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.v7.MediaRouter">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.v7.Palette">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.v7.RecyclerView">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Android.Support.Vector.Drawable">
      <Version>28.0.0.1</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Build.Download">
      <Version>0.4.11</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Firebase.Common">
      <Version>71.1610.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Firebase.Iid">
      <Version>71.1710.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Firebase.Messaging">
      <Version>71.1740.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Forms">
      <Version>4.2.0.709249</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Forms.Maps">
      <Version>4.2.0.709249</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.Forms.Visual.Material">
      <Version>4.2.0.709249</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.GooglePlayServices.Base">
      <Version>71.1610.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.GooglePlayServices.Basement">
      <Version>71.1620.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.GooglePlayServices.Location">
      <Version>71.1600.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.GooglePlayServices.Maps">
      <Version>71.1610.0</Version>
    </PackageReference>
    <PackageReference Include="Xamarin.GooglePlayServices.Tasks">
      <Version>71.1601.0</Version>
    </PackageReference>

项目的最低Android版本为5.0,目标版本为9.0.HTTP客户端实施设置为默认,SSL/TLS实施也是默认(本地TLS 1.2 +)

Project's minimum Android version is 5.0, Target version is 9.0. HTTP client implementation set to default, SSL/TLS implementation is also default (Native TLS 1.2+)

我在真实设备上进行了测试,wifi连接正常,我发送HTTP请求的服务器也正常,即使从同一设备上的Web浏览器也可以与之通信.

I test it on real devices, wifi connection is ok, the server I send HTTP requests is also ok, I can communicate with it even from a web browser on the same device.

请问是否有人有任何建议?非常感谢!

I kindly ask if anyone has any suggestion? Thanks a lot!

推荐答案

Xamarin.Forms对 HttpClient 无效,仅对用户界面有效.

Xamarin.Forms have no effect on HttpClient, they have effect ONLY on the user interface.

您应该进一步考虑以了解您所做的其他更改,并在发现新问题时提出一个新问题.

You should take further consideration to understand what else you have changed and ask a new question when you find out.

这篇关于升级Xamarin Forms项目中的nuget后,Android网络问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆