0

我已经将 Flurl 设置为在我的 Xamarin PCL 中运行,并且我正在调用我在 MVC 应用程序中运行的 Web Api。

似乎 Flurl 可以毫无问题地访问我部署的 API,但由于某种原因我无法在本地测试更改。

这就是我正在做的事情:

var data = await "http://localhost:60257/api/gigapi".GetJsonAsync<List<Gig>>();

我也尝试了一个简单的 GetAsync() 但同样无济于事。

任何帮助,将不胜感激。

编辑:

只是为了获得更多信息,该项目是对 Ionic 移动应用程序的重新开发。我已经在本地运行了 ionic 应用程序,它能够毫无问题地访问我的本地 web api,所以这不是防火墙问题或类似的问题 - 这可能是我在 Flurl 中做错的事情。

编辑2:

这是例外:

e.Message“对http://localhost:60257/api/gigapi 的请求失败。错误:ConnectFailure(连接被拒绝)”字符串

和堆栈跟踪:

StackTrace " 在 Flurl.Http.Configuration.FlurlMessageHandler+d__1.MoveNext () [0x003ec] 在 C:\projects\flurl\src\Flurl.Http.Shared\Configuration\FlurlMessageHandler.cs:62 \n--- 堆栈结束从先前引发异常的位置跟踪 ---\n 在 Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task 任务) [0x00042] in <1c7d529d87ec4bdcbde02e9494f3b5ae>:0 \n 在 Microsoft.Runtime.CompilerServices .TaskAwaiter.HandleNonSuccess (System.Threading.Tasks.Task 任务) [0x0001c] in <1c7d529d87ec4bdcbde02e9494f3b5ae>:0 \n 在 Microsoft.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task 任务) [0x00009] 在 < 1c7d529d87ec4bdcbde02e9494f3b5ae>:0 \n 在 Microsoft.Runtime.CompilerServices.ConfiguredTaskAwaitable1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <1c7d529d87ec4bdcbde02e9494f3b5ae>:0 \n at Flurl.Http.HttpResponseMessageExtensions+<ReceiveJson>d__01[T].MoveNext () [0x00024] in C:\projects\flurl\src\Flurl.Http.Shared\HttpResponseMessageExtensions.cs:26 \n--- 堆栈跟踪从上一个引发异常的位置结束 -- -\n 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] 在 /Users/builder/data/lanes/3819/96c7ba6c/source/mono/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/ /Users/builder/data/lanes/3819/96c7ba6c/source/mono/mcs/ 中的 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task 任务) [0x00047] 处的 exceptionservicescommon.cs:143 \n类/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:187 \n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.任务任务)[0x0002e] 在 /Users/builder/data/lanes/3819/96c7ba6c/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:156 \n 在 System.Runtime。 CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task 任务) [0x0000b] 在 /Users/builder/data/lanes/3819/96c7ba6c/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/ TaskAwaiter.cs:128 \n 在 System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] 在 /Users/builder/data/lanes/3819/96c7ba6c/source/mono/mcs/class/referencesource /mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:357 \n 在 C:\Users\Minneth\Documents\Projects\SarifForms\SarifForms\Login.xaml.cs 中的 SarifForms.Login+d__1.MoveNext () [0x00033] :31 " 字符串细绳细绳任务任务)[0x0000b] 在 /Users/builder/data/lanes/3819/96c7ba6c/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 \n 在 System.Runtime。 CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] 在 /Users/builder/data/lanes/3819/96c7ba6c/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs :357 \n 在 SarifForms.Login+d__1.MoveNext () [0x00033] 在 C:\Users\Minneth\Documents\Projects\SarifForms\SarifForms\Login.xaml.cs:31 "字符串任务任务)[0x0000b] 在 /Users/builder/data/lanes/3819/96c7ba6c/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:128 \n 在 System.Runtime。 CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] 在 /Users/builder/data/lanes/3819/96c7ba6c/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs :357 \n 在 SarifForms.Login+d__1.MoveNext () [0x00033] 在 C:\Users\Minneth\Documents\Projects\SarifForms\SarifForms\Login.xaml.cs:31 "字符串GetResult () [0x00000] in /Users/builder/data/lanes/3819/96c7ba6c/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:357 \n 在 SarifForms.Login+ d__1.MoveNext () [0x00033] 在 C:\Users\Minneth\Documents\Projects\SarifForms\SarifForms\Login.xaml.cs:31 "字符串GetResult () [0x00000] in /Users/builder/data/lanes/3819/96c7ba6c/source/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:357 \n 在 SarifForms.Login+ d__1.MoveNext () [0x00033] 在 C:\Users\Minneth\Documents\Projects\SarifForms\SarifForms\Login.xaml.cs:31 "字符串

最后更新:

答案贴在下面。

4

1 回答 1

0

有点明显,但我想我已经解决了这个问题。

我正在测试我的 Xamarin 应用程序,它使用 Android 模拟器中的 Flurl,所以 localhost 实际上是 Android 模拟器 - 不是我在同一台机器上运行的本地 web api。

我相信我必须改用 10.0.2.2 的环回 IP。

它与我的 Ionic 应用程序一起工作的原因是因为我在浏览器中运行 Ionic 应用程序而不是 Andorid 模拟器。

希望这可以帮助某人。

于 2016-11-08T17:45:01.673 回答