【问题标题】:How to define HttpClient BaseAdress dynamically如何动态定义 HttpClient BaseAdress
【发布时间】:2021-10-04 10:10:00
【问题描述】:

我有一个用 c# 编写的 Asp.Net 网页。此网页正在与服务器上的主机通信。服务器地址实际上在我的控制器方法中硬编码为

 static PatientController()
        {
            //Create the HttpClient once and use it
            _httpClient = new HttpClient();
            _httpClient.BaseAddress = new Uri("http://localhost:9002/prom2etheus/v1/");
            _patientList = new List<Patient>();
            
        }

如何将 URI 配置为用户可以在 UI 开始时输入的参数?我的问题是,主机在服务器上运行,而我的 UI 在同一台服务器上运行,但在 Docker 容器中。所以主机的IP可以改变,我不想在我的控制器方法中硬编码主机的IP。哪种方法更好?

【问题讨论】:

  • 您不应该为每个控制器实例声明一个 HttpClient。见You're using HttpClient wrong and it's destabilizing your software。我推荐Flurl,而不是直接使用HttpClient,它可以为您解决其中的一些问题。然后,您可以通过方法参数或您想要获取该字符串的任何其他技术获取基本 URL。
  • 感谢您的提示。我不知道 flurl,这似乎是一个很好的工具

标签: c# asp.net parameter-passing uri


【解决方案1】:

这取决于。如果您希望 url 持久化,那么将其存储在数据库或文件中是个好主意。

另一方面,如果可以在每次应用启动时提示用户,它可以存储在内存中。这将带来额外的好处,因为没有 IO,所以读/写速度会快得多。也可能有其他存储选项,例如第三方存储提供。在这两种情况下,您都必须考虑线程安全。

【讨论】:

  • 感谢您的帮助。我可以将 URL 也存储在 web.config 文件中吗?或者我应该为此阻止自己的配置文件?
猜你喜欢
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 2018-09-05
  • 2011-04-10
  • 1970-01-01
  • 1970-01-01
  • 2022-10-25
  • 2019-03-26
相关资源
最近更新 更多