我正在构建我的第一个Xamarin应用程序,并试图使用它连接到同一台计算机上的Restful API。我们选择Xamarin的原因是,我们可以构建一个可以在多个设备上运行的应用程序。
例如,我们有一个在IISExpress上运行的外部WebAPI项目,我们已将URL设置为http://127.0.0.1:5001
在我们的Xamarin项目中,我们可以通过Visual Studio中的相应模拟器,使用UWP和Android应用程序成功连接到API项目。这是我用来区分正在运行的设备仿真器的示例。
public static string BaseAddress = Device.RuntimePlatform == Device.Android ? "http://10.0.2.2:5001"
: Device.RuntimePlatform == Device.iOS ? "http://localhost:5001"
: "http://127.0.0.1:5001";
public static string TodoItemsUrl = BaseAddress + "/api/Appointment/GetAppointments";
这是当我们运行iOS模拟器时尝试调用我们的API控制器。似乎没有任何请求。我尝试了很多不同的东西,但似乎无法解决。还发现那里的文档非常模糊。有谁知道为什么会这样?
我定期收到
System.Net.WebExceptionStatus.ConnectFailure
对此问题IMO的最佳解决方案是在Visual Studio IDE中工作时完全放弃IISExpress,而转而使用LocalIIS。这样,我们可以将API地址指定为IP;例如在192.168。范围内。这样可以确保我们仍然可以调试东西并成功避免由于安装仿真器而引起的环回问题。