使用Xamarin.Forms创建ASP.Core WebAPI

6
我希望在 Xamarin 应用启动时启动一个 Web API 主机,我将对其进行请求,但我不知道如何连接 Web API 项目和 Xamarin.Forms,或者是否有其他调试应用程序的方法。
我知道你可以将应用程序部署到 Azure 服务上,但我想让它在本地工作。

当您在本地运行ASP Core项目时,它将被分配一个端口号(我相信您可以在app.json中配置此端口号)。在您的Forms应用程序中使用服务器IP和端口号。请注意,默认情况下,VS开发服务器不会接受远程请求。 - Jason
1
听起来很有趣。你尝试过将你的 Web API 项目中 Program.cs 和 Startup.cs 的内容复制到 Xamarin 项目中,并在应用程序启动时执行吗? - ˈvɔlə
@Jason,你能否详细说明一下,并且如果可能的话,给出一个例子? - SantaZ
3个回答

2
这是两个不同的应用程序。

Xamarin.Forms

Xamarin.Forms是一个开源的UI框架。Xamarin.Forms允许开发人员从单个共享代码库构建Android、iOS和Windows应用程序。
WebApi Core ASP.NET Web API是一个框架,它使构建可达到广泛客户端(包括浏览器和移动设备)的HTTP服务变得容易。ASP.NET Web API是在.NET Framework上构建RESTful应用程序的理想平台。
第一个部署在应用商店并安装在设备上。
Web API部署在Web服务器(如IIS)或Azure上,并可以通过HTTP调用通过Internet访问。
在开发过程中,您可以在本地主机上构建和部署。请查看此处的设置指南:https://learn.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.1&tabs=visual-studio 你可以按照这里所描述的方式从Xamarin Forms中使用API: https://learn.microsoft.com/zh-cn/xamarin/xamarin-forms/data-cloud/web-services/rest 例子:
public async Task<List<TodoItem>> RefreshDataAsync ()
{
  ...
  var uri = new Uri (string.Format (Constants.TodoItemsUrl, string.Empty));
  ...
  var response = await _client.GetAsync (uri);
  if (response.IsSuccessStatusCode)
  {
      var content = await response.Content.ReadAsStringAsync ();
      Items = JsonConvert.DeserializeObject <List<TodoItem>> (content);
  }
  ...
}

3
他明确表示希望在启动Xamarin应用程序时运行本地Web API。 - ˈvɔlə
2
不同的托管和环境意味着您无法从同一工作室调试两个应用程序。 - Athanasios Kataras

1
这在Visual Studio 2019/2017中非常简单。
创建Xamarin表单项目后,在解决方案中添加一个ASP.NET Core应用程序;Visual Studio将管理一切。要调试ASP项目,请将其设置为“启动项目”,然后单击美化的“播放/启动”按钮,浏览器就会启动并等待断点或其他操作...
您可以同时调试Xamarin和ASP Web应用程序。
首先,我们假设Web应用程序作为您的应用程序的“API端点”;因此,您将调用它来发送或请求数据... 然后我们假设您有一个“Web客户端”来调用您的端点以及在您的Web应用程序中接收请求和响应的“控制器”...
好的,既然都给出了,那么请按照以下步骤操作:
右键单击“解决方案资源管理器”中的解决方案 选择“属性” 在属性页面的左侧,选择“启动项目” “多个启动项目”单选框 在每个要调试的项目上将“启动”设置为“动作”列 然后确定并开始
我希望这能有所帮助。
有用的链接
- 创建一个 ASP 应用程序从官方文档 - 调试多个项目由Max回答

把一个web应用程序直接添加到Xamarin Forms解决方案中不是一个好主意,因为该解决方案会部署在应用商店。Web应用程序将使应用程序比实际需要的变得更大,并且无法从应用商店运行。您必须从其他地方分别像AWS托管Web应用程序,以便生产应用程序实际上能够进行任何调用。我认为最好制作两个单独的项目。 - Wes Thompson
1
请仔细阅读以上内容并阅读问题。没有人在里面,除了联合。 - Fabrice T
你确切地说过:“在创建Xamarin表单项目之后,将ASP.NET Core应用程序添加到解决方案中。”除了将Web应用程序添加到同一解决方案中,这句话还能被解释成什么意思呢? - Wes Thompson
一个解决方案是一组共享相同目标的项目。XF 是前端,ASP 是后端;它们在同一个解决方案中协同工作,但不部署在同一个环境中...真的应该仔细阅读或再三考虑... - Fabrice T
@WesThompson 网络应用程序无法编译成移动应用程序。将所有项目放在一个解决方案中可能很有用,这有助于组织文件和项目,并且如果您在它们之间使用源生成器或共享代码(例如逻辑或DTO),那么也很方便。但是,只有标记为移动应用程序依赖项的项目才会被包含在内,即使如此,链接器也会删除未被引用的部分。 - Matt G

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接