0

我正在使用 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 属性,而不是在每个请求中输入完整路径。

4

0 回答 0