我正在使用 Xamarin.Forms 为 UWP 和 Android 开发应用程序。使用依赖注入模式 (DI),我注册了一个 HttpClient 服务来管理与应用程序中具有可配置 IP 地址的后端的连接。在 App.xaml.cs 中:
public App() {
InitializeComponent();
DependencyService.Register<System.Net.Http.HttpClient>();
MainPage = new NavigationPage(new LoginPage());
}
在登录页面中,由于我的开发要求,我有一个“条目”组件来编辑我的后端的 URL。在 LoginPage ViewModel 中,我得到了服务
public HttpClient Http => DependencyService.Get<HttpClient>();
而他们,我设置了用户在“条目”上介绍的 url 基础
public async Task LoginMethod() {
Http.BaseAddress = new Uri(TheIntroducedIP);
/*Navigate to next pages and make some requests*/
}
这可行,但问题是如果我在使用 HttpClient 注入服务执行一些请求后返回此 LoginPage 并尝试再次设置 UrlBase,它会引发异常:
System.InvalidOperationException: 'This instance has already started one or more requests. Properties can only be modified before sending the first request.'
是否有任何方法或不同的方法来重新注入/重新启动服务,以便我可以重新映射 urlbase?
注意:我想继续使用 DI,避免使用“使用”为每个调用创建不同的 HttpClient 实例。另外,我想使用 UrlBase 属性,而不是在每个请求中输入完整路径。