当前位置:  开发笔记 > 编程语言 > 正文

使用Uri字符串,可能有也可能没有尾随/

如何解决《使用Uri字符串,可能有也可能没有尾随/》经验,为你挑选了0个好方法。

我已经在代码中使用HttpClient一段时间了,并且一直觉得它的使用Uris导致了我的实现中的一些脆弱性.我们的大多数服务端点基地址都在app./web.config中.结果,它们可以很容易地改变.

我发现当使用这些端点字符串生成a时Uri,如果它们不以a结尾/,我会得到非常不稳定的行为.当调用GetAsync()与非/封端的BaseAddress,即常发送的GET请求所得级联URL后最终下降任一字符串/中的BaseAddress,或者它会下降字符串前述第一/在GetUri.

例如:

BaseAddress: http://test/serviceEndpoint

GetUri: api/customer

HttpClient.GetAsync()GetUri它调用时,它将尝试从中获取http://test/api/customer.如果我BaseAddress用a 封顶/,一切都按预期工作.

我的问题BaseAddress配置驱动,并在.config文件中添加注释,说"请确保使用/!结束所有服务URL ".是一个非常脆弱的解决方案.

所以我养成了在我的所有HttpClient构造中使用以下代码的习惯:

        var service = settings.GetValue("ServiceBaseUrl");
        var serviceUri = !service.EndsWith("/")
            ? new Uri(service + "/")
            : new Uri(service);

        _client = new HttpClient
        {
            BaseAddress = serviceUri
        };`

虽然这不易碎,但在每个HttpClient构造函数中都有重复性.是否有任何东西HttpClientUri我可以用来避免这个样板代码?

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有