从Xamarin Forms连接到RESTful服务的本地调试实例时出现问题

时间:2019-05-10 15:20:03

标签: c# rest debugging xamarin xamarin.android

我在VS 2015项目中有一个基本的RESTful服务实现。我刚刚开始学习Xamarin表单(在VS 2019中),并且试图验证我是否可以使用Android仿真器中的服务。

在调试模式下运行服务时,可以使用“ http://localhost:49826/api/values/2”并成功从服务中获取数据。

但是,当我然后在Xamarin项目中使用相同的东西时:

_client = new HttpClient(); _client.GetAsync(“ http://localhost:49826/api/values”);

我收到以下错误:

{System.Net.WebException:无法连接到localhost / 127.0.0.1:49826 ---> Java.Net.ConnectException:无法连接到localhost / 127.0.0.1:49826

以下是我在这里找到的信息:https://docs.microsoft.com/en-us/xamarin/cross-platform/deploy-test/connect-to-local-web-services,我将通话更改为:

_client.GetAsync(“ http://10.0.2.2:49826/api/values”);

{Newtonsoft.Json.JsonReaderException:解析值:<时遇到意外字符。路径”,第0行,位置0。

使用“ https://jsonplaceholder.typicode.com/posts”可以使客户端调用正常运行,而从浏览器中调用该服务也可以正常运行,但是当我尝试连接它们时缺少某些内容。有什么想法吗?

3 个答案:

答案 0 :(得分:0)

如果仍然无法访问本地终结点,请尝试从IIS Express切换到Windows上可用的完整IIS。过去这对我有用。我知道IIS Express处理传入流量的方式与IIS不同。

Windows:开始->搜索:Windows功能->打开或关闭Windows功能->启用Internet信息服务。

这时,请导航至localhost,以确保您看到IIS登陆页面。

Visual Studio(在Web项目中)->项目-> [ProjectName]属性...->调试->将启动从IIS Express切换到IIS。

请记住,如果您执行此操作以切换到您的项目,并在未启用IIS的计算机中打开该项目,则他们将无法打开它。因此,您必须根据需要将其切换回IIS Express。

答案 1 :(得分:0)

我有一个类似的问题,我这样解决了:

要确定您的IP地址,请转到cmd,然后键入ipconfig。选择您的IPv4地址。

答案 2 :(得分:0)

我在Xamarin with Visual Studio上,需要从物理Android设备上在我的开发机上使用REST-API来遵循教程。

因此我安装了名为Conveyor by Keyoti的免费Visual Studio工具/插件。

在开发计算机上的Visual Studio中,WebApp / Rest-Api处于Debug模式时,Conveyor为您提供了三种从另一台设备连接到应用程序的方法:

  • 本地URL(一个localhost URL,与Visual Studio相同)
  • 远程URL(用于从连接到本地网络的另一台设备访问您的应用程序的URL)
  • Internet URL(通过Internet访问您的应用程序)

因此,我激活了internet URL选项,并通过我的数据计划成功地从Android手机访问了Rest-Api(如果您的设备位于同一本地网络上,则访问Remote URL),但是您您必须先注册免费帐户才能使用Internet URL选项,该选项将再几个月免费使用(根据撰写此评论时的网站)。

要在Visual Studio中安装Conveyor,请转到Tools >> Extensions and updates,然后选择左侧的Online选项,搜索并安装。您必须重新启动Visual Studio才能使安装生效。