我有一个较旧的HTTP API,我需要用一个用web api 2编写的新API替换。我正在构建它时通过新的代理旧的。例如,/ user / 1234如果在新服务器上实现将从中提供,但如果在新服务器上找不到,则将从旧服务器代理。
现在,它适用于大多数响应类型(application / json,text / plain,text / xml),但它不会返回代理的HTML响应。以下是执行此操作的F#代码:
let msg = new HttpRequestMessage(x.Request.Method, x.Request.RequestUri.PathAndQuery)
if x.Request.Method <> HttpMethod.Get then msg.Content <- x.Request.Content
let req = async {
let client = new HttpClient()
client.BaseAddress <- new Uri("http://old.api.url")
let! response = client.SendAsync(msg) |> Async.AwaitTask
response.EnsureSuccessStatusCode() |> ignore
return response
}
Async.RunSynchronously(req)
它只返回从旧API接收的HttpResponseMessage。它适用于application / json和text / plain(这是旧版本大多数时候返回的),但即使它收到正确的HTML响应(在调试器中看到),它也不会返回它。我收到的回复总是来自之前的请求。所以如果我得到一个/ foo / bar请求的json响应,如果我然后调用/ foo / baz有一个text / html响应,它仍然会从/ foo / bar返回响应。
有什么建议吗?