在本地仿真器中运行的Xamarin应用程序可以与本地IIS中托管的Web API进行通信?

时间:2018-07-30 21:54:25

标签: android xamarin xamarin.forms visual-studio-2017

我的开发机位于本地LAN中,具有本地静态IP地址。而且模拟器基本上是另一台设备,因此应用程序应使用本地静态IP地址,而不是localhost或127.0.0.1。所以我有这样的硬编码基本URI:

                var baseUri = new Uri("http://192.168.0.8:9030/webapi/");

如果其他开发人员需要测试代码,那就不好了。我正在考虑将基本uri放入配置文件中,并在部署模拟器之前,使用开发人员计算机的本地IP地址更新配置文件。

在Xamarin中是否有用于此目的的内置配置文件或构建机制?或如何使用带有本地IIS和本地模拟器的Web API进行测试?

我正在使用Visual Studio 2017 Professional。

1 个答案:

答案 0 :(得分:2)

  1. Android模拟器具有使用的虚拟/专用私有子网,并且该模拟器映射 host 系统的IP为 10.0.2.2 到(因此模拟器上的10.0.2.2是主机的localhost / 127.0.0.1)。

  2. 您当然可以在项目中添加文本文件(json / xml / etc ..),并在运行时从中加载/读取IP值。

    a。程序集嵌入文件:How to read embedded resource text file

    b。您可以使用本机平台应用程序只读捆绑包来存储配置文件,并在运行时从本机应用程序或.NetStd库读取该文件,而不是使用程序集嵌入式文件。 (注意:相对于程序集嵌入,我更喜欢这种方法。)

Xamarin.Essentials的OpenAppPackageFileAsync提供了一种简单的方法来访问应用程序中的只读捆绑文件(AndroidAssets,BundleResource等。)

using (var stream = await FileSystem.OpenAppPackageFileAsync("sushiConfig.json"))
{
    using (var reader = new StreamReader(stream))
    {
        var fileContents = await reader.ReadToEndAsync();
    }
}