【发布时间】:2020-07-04 17:50:47
【问题描述】:
Xamarin 中的 Master-Detail 模板通常是我的许多使用 .Net Core Backing Service 的应用程序的一个很好的起点。为了审查,它在客户端中有一个依赖服务,允许在开发时模拟 Azure 支持服务或连接到真实或本地服务。
模板生成的控制变量为public static bool UseMockDataStore = true;
所有讨论的代码都可以在这里找到:https://github.com/BicycleMark/SignalRGB
我创建了一个名为 SignalRGB 的 Xamarin Master-Detail 项目并执行了以下操作:
3) 记下 url: [https://localhost:44300]
4)打开另一个Visual Studio实例(2)以UseMockDataSource=false运行客户端/它显示的默认值导致客户端使用MockDataSource
5) 转到这些行并更新了客户端,以便与我的本地服务器对话,等待一个 http 请求:
public static string AzureBackendUrl = //DeviceInfo.Platform == DevicePlatform.Android ? "http://10.0.2.2:5000" : "http://localhost:44300"; DeviceInfo.Platform == DevicePlatform.Android ? "http://localhost:44300" : "http://localhost:44300"; public static bool UseMockDataStore = false; public App() { InitializeComponent(); if (UseMockDataStore) { DependencyService.Register<MockDataStore>(); } else { DependencyService.Register<AzureDataStore>(); } MainPage = new MainPage(); }
-
从 VS Instance(2) 运行 SignalRGB.UWP,客户端应用程序挂在 GetStringAsync() 线上:
bool IsConnected => Connectivity.NetworkAccess == NetworkAccess.Internet; public async Task<IEnumerable<Item>> GetItemsAsync(bool forceRefresh = false) { if (forceRefresh && IsConnected) { var json = await client.GetStringAsync ($"api/item"); items = await Task.Run(() => JsonConvert.DeserializeObject<IEnumerable<Item>>(json)); } return items; }
我尝试了其他iOS平台并得到相同的结果:
我在这里做错了什么?
【问题讨论】:
-
您是否尝试过使用 IP 而不是 localhost?我不了解 UWP,但通常这会导致 iOS 和 Android 出现问题
-
进入命令行:(1) ipConfig 产生 192.168.77.113 (2) ping 192.168.77.113 成功 (3) Ran Server 项目显示浏览器正确localhost:44300/api/item (4) 替换为192.168.77.113:44300/api/item浏览器返回“错误请求”
-
您的服务器设置是否可以处理远程请求?
-
我在本地做这一切。我在 VS 2019 工具栏中按运行按钮“IISExpress”运行 Visual Studio 的一个实例
-
所有源代码都在这里github.com/BicycleMark/SignalRGB
标签: web-services xamarin master-detail project-template