tal*_*999 5 c# json cors asp.net-core asp.net-core-webapi
我开发了一个 Angular 应用程序,需要使用来自远程服务器的 json 数据。由于 CORS 问题,应用程序无法直接从该服务器获取数据。我的解决方案是开发一个“代理”Web API 来读取该 json 并将其返回到我的应用程序。目前,这就是我正在做的方式:
public async Task<IActionResult> MyJson()
{
const string jsonUrl = "url-of-remote-json";
using (var client = new HttpClient())
{
using (var result = await client.GetAsync(jsonUrl))
{
if (result.IsSuccessStatusCode)
{
return new ObjectResult(JsonConvert.DeserializeObject(await result.Content.ReadAsStringAsync()));
}
}
}
return new ObjectResult(new { });
}
Run Code Online (Sandbox Code Playgroud)
但是,我相信这远远不是一种有效的方法,因为我必须将 json 作为字符串读取,然后使用 JsonConvert 包将其转换为对象以提供 Web api 方法。因此,性能并不是很好。
我想知道是否有更简单/有效/更简单的方法来完成这项任务?
只需传递来自远程服务器的响应即可。查看编辑后的示例。
public async Task MyJson()//void if not async
{
string jsonUrl = "url-to-json";
HttpContext.Response.ContentType = "application/json";
using (var client = new System.Net.WebClient())
{
try
{
byte[] bytes = await client.DownloadDataTaskAsync(jsonUrl);
//write to response stream aka Response.Body
await HttpContext.Response.Body.WriteAsync(bytes, 0, bytes.Length);
}
catch (Exception e)//404 or anything
{
HttpContext.Response.StatusCode = 400;//BadRequest
}
await HttpContext.Response.Body.FlushAsync();
HttpContext.Response.Body.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
按预期工作。
| 归档时间: |
|
| 查看次数: |
2244 次 |
| 最近记录: |