Android์์ ์ต์ Forms ๋ฐ PCL ํ๋ก์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ... ํ๋์ฝ๋ฉ๋ ImageSource may
์๊ฐ ์ด๊ณผ๊ฐ ์๋ XAML ImageCell ๋ฐ ์ค๋ฅ๋ฅผ ๋ฐํํฉ๋๋ค.
Shared ๋๋ .NET Standard ์๋ฃจ์ ์์ ์์๋๋ก ์๋ํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
์๋ฎฌ๋ ์ด์ ์์๋ง ํ ์คํธ๋จ
<ImageCell
ImageSource="https://www.xamstatic.com/dist/images/pages/platform/visual-studio-icon-uHIZMvQl.png"
Text="{Binding Name}"
Detail="{Binding Job}">
</ImageCell>
Image Loading: Error getting stream for https://www.xamstatic.com/dist/images/pages/platform/visual-studio-icon-uHIZMvQl.png: System.Threading.Tasks.TaskCanceledException: A task was canceled.
...
[0:] ImageLoaderSourceHandler: Could not retrieve image or image data was invalid: Uri: https://www.xamstatic.com/dist/images/pages/platform/visual-studio-icon-uHIZMvQl.png
๋ชจ๋ ์ด๋ฏธ์ง๋ Shared ๋ฐ .NET Standard ์๋ฃจ์ ์์์ ๊ฐ์ด ๋ก๋๋ฉ๋๋ค.
[0:] Image Loading: Error getting stream for https://www.xamstatic.com/dist/images/pages/platform/visual-studio-icon-uHIZMvQl.png: System.Threading.Tasks.TaskCanceledException: A task was canceled.
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00026] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Net.Http.HttpClientHandler+<SendAsync>d__63.MoveNext () [0x00528] in <35658e59c86d40bdbb2ef0bb34b4f0c7>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0001a] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Net.Http.HttpClient+<SendAsyncWorker>d__49.MoveNext () [0x000ca] in <35658e59c86d40bdbb2ef0bb34b4f0c7>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0001a] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in <657aa8fea4454dc898a9e5f379c58734>:0
at Xamarin.Forms.Forms+AndroidPlatformServices+<GetStreamAsync>d__16.MoveNext () [0x0003e] in D:\agent\_work\2\s\Xamarin.Forms.Platform.Android\Forms.cs:448
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0001a] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <657aa8fea4454dc898a9e5f379c58734>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <657aa8fea4454dc898a9e5f379c58734>:0
at Xamarin.Forms.UriImageSource+<GetStreamAsyncUnchecked>d__23.MoveNext () [0x00224] in D:\agent\_work\2\s\Xamarin.Forms.Core\UriImageSource.cs:174
[0:] ImageLoaderSourceHandler: Could not retrieve image or image data was invalid: Uri: https://www.xamstatic.com/dist/images/pages/platform/visual-studio-icon-uHIZMvQl.png
๋๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์๊ณ ๊ทธ๊ฒ์ด ๋น์ ๊ณผ ๊ฐ์ SSL URL์์ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ๋ค๋ ์ฌ์ค ๋๋ฌธ์ด๋ผ๋ ๊ฒ์ ์์์ต๋๋ค. ๋ค์์ ๋ฌธ์ ์ ๋ํ ์๋ฃจ์
์
๋๋ค. https://doumer.me/2018/03/29/resolve-image-loading-error-in-xamarin-forms/
SSL ๋ฐ TLS ์ค์ ์ ๋ณ๊ฒฝํ์ฌ ํด๊ฒฐํ์ต๋๋ค.
์! ํด๋น ํ์ด์ง๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
์ด URL์ ๋ ์ ์๋ํฉ๋๋ค(์ ๋ ฅ ์): https://doumer.me/resolve-image-loading-error-in-xamarin-forms
์๋ณธ repro์ ์ด๋ฏธ์ง URL์ด ์ด ์์ ์์ ์์ ํ ๊นจ์ง ๊ฒ ๊ฐ์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๋ netstandard ๋๋ PCL์์ ๋ก๋ํ ์ ์์ต๋๋ค.
๋ฐฉ๊ธ ๋ค๋ฅธ URL์ ์ฐพ์๊ณ 2.5์์ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ์ง ๋ชปํ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ PCL ์ํ์ 3.1๋ก ์
๋ฐ์ดํธํ๊ณ ๊ฑฐ๊ธฐ์ ๋ก๋๋ ๋ชจ๋ ์ด๋ฏธ์ง๋ฅผ
๋ด ํ๊ฐ๊ฐ ์๋ชป๋ ๊ฒ ๊ฐ์ผ๋ฉด ์๋ ค์ฃผ๊ณ 3.1 ์ฌํ์ ์ฒจ๋ถํ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์! ํด๋น ํ์ด์ง๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
์ด URL์ ๋ ์ ์๋ํฉ๋๋ค(์ ๋ ฅ ์): https://doumer.me/resolve-image-loading-error-in-xamarin-forms