【问题标题】:Create ASP.Core WebAPI with Xamarin.Forms使用 Xamarin.Forms 创建 ASP.Core WebAPI
【发布时间】:2020-06-13 09:19:22
【问题描述】:

我想在 xamarin 上启动应用程序时启动一个 web api 主机,我会提出请求,但我不明白如何连接 web api 项目和 xamarin.forms 或者有其他调试方式应用程序。

我知道你可以在 azure 服务上部署应用程序,但我希望它在本地工作

【问题讨论】:

  • 当你在本地运行你的 ASP Core 项目时,它会被分配一个端口号(我相信你可以在 app.json 中配置它)。在您的表单应用程序中使用服务器 IP 和端口号。请注意,默认情况下,VS 开发服务器不会接受远程请求。
  • 听起来很有趣。您是否尝试将 Program.cs 和 Startup.cs(您的 Web API 项目)的内容复制到您的 Xamarin 项目并在应用程序启动时执行它?
  • @Jason 你能说得更详细些吗?如果可能的话,举个例子?

标签: c# xamarin.forms asp.net-core-webapi


【解决方案1】:

这对于 Visual Studio 2019/2017 来说非常简单。

创建 Xamarin 表单项目后,将 ASP.NET Core 应用添加到您的解决方案; Visual Studio 将管理一切。要调试 ASP 项目,请将其设置为 Startup project 并单击美化 Play/Start 按钮,浏览器应该会启动并等待断点或您的东西...

您可以同时调试 Xamarin 和 ASP Web 应用。

首先,我们假设 Web 应用充当您应用的 API 端点;这样您就可以调用它来发送或请求数据... 然后我们假设您有一个Web 客户端 来调用您的端点和您的Web 应用程序中的控制器 来接收请求并做出响应...

确定所有这些,执行以下操作:

  • 解决方案资源管理器中右键单击解决方案
  • 选择属性
  • 在属性页左侧,选择Startup Projects
  • 多个启动项目单选框
  • 在您要调试的每个项目上设置开始操作列
  • 然后就可以玩了

希望这会有所帮助。

有用的链接

【讨论】:

  • 直接在 Xamarin Forms 解决方案中添加 Web 应用程序不是一个非常糟糕的主意吗?该解决方案被部署在应用商店中。 Web 应用程序会使应用程序比它需要的大得多,并且无法从应用程序商店运行。您必须从其他地方(例如 AWS)单独托管 Web 应用程序,以便生产应用程序实际能够进行任何调用。我认为最好制作两个单独的项目。
  • 您应该仔细阅读以上内容并提出问题。没有人在没有人之内,只有结合
  • 您确实说过,“创建 Xamarin 表单项目后,将 ASP.NET Core 应用程序添加到您的解决方案中。”除了将网络应用程序添加到同一个解决方案之外,还有什么其他方式可以解释这一点?
  • 解决方案是具有相同目标的项目的集合。 XF 是正面,ASP 是背面;两者在同一个解决方案中协同工作,但没有部署在同一个环境中......真的你应该仔细阅读或三思而后行......
  • @WesThompson 网络应用程序不会被编译到移动应用程序中。将所有项目放在一个解决方案中可能很有用,它有助于组织文件和项目,并且如果您使用源生成器或在它们之间共享逻辑或 DTO 之类的代码也很方便。但只有标记为移动应用程序依赖项的项目才会被包含在内,即便如此,链接器也会删除未引用的位。
【解决方案2】:

您可以在本地运行两个 Visual Studio 实例,一个用于 API 项目,另一个用于 Xamarin 应用。

除了 Athanasios Kataras 的回答之外,本文档还告诉您如何从 iOS 模拟器或 Android 模拟器连接到本地 Web 服务:https://docs.microsoft.com/en-us/xamarin/cross-platform/deploy-test/connect-to-local-web-services

【讨论】:

    【解决方案3】:

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

    Xamarin.Forms

    Xamarin.Forms 是一个开源 UI 框架。 Xamarin.Forms 允许开发人员从单个共享代码库构建 Android、iOS 和 Windows 应用程序。

    WebApi 核心

    ASP.NET Web API 是一个框架,可让您轻松构建可访问各种客户端(包括浏览器和移动设备)的 HTTP 服务。 ASP.NET Web API 是在 . NET 框架。

    第一个部署在应用商店并安装在设备上。

    Web API 部署在 Web 服务器(如 IIS)或 Azure 上,可以通过 http 调用通过 Internet 访问。

    在开发过程中,您可以在本地主机上构建和部署。在此处查看设置指南:https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-3.1&tabs=visual-studio

    您可以使用 xamarin 表单中的 API,如下所述: https://docs.microsoft.com/en-us/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);
      }
      ...
    }
    

    【讨论】:

    • 他明确表示要在启动 Xamarin 应用程序时运行本地 Web API。
    • 不同的主机和环境,意味着你不能从同一个工作室调试这两个应用程序。
    猜你喜欢
    • 2018-05-13
    • 2019-06-26
    • 2019-07-10
    • 1970-01-01
    • 2016-10-02
    • 2016-11-22
    • 2016-11-18
    • 2020-12-22
    • 1970-01-01
    相关资源
    最近更新 更多