c# - 在 .net 中重用一个 Web 响应并为许多操作休息
问题描述
我有个问题。
我有一个简单的服务,它执行请求并将响应流回文件,它看起来像:
public async ValueTask GetWaetherByLocation(string place)
{
try
{
const string locationEndpoint = "https://localhost/api/place/?query=";
var fullEndpoint = $"{locationEndpoint}{place}";
HttpWebRequest request = WebRequest.CreateHttp(fullEndpoint);
WebResponse response = await request.GetResponseAsync();
ContentDispositionHeaderValue contentDisposition;
var fileName = ContentDispositionHeaderValue.TryParse(response.Headers["Content-Disposition"], out contentDisposition)
? contentDisposition.FileName
: "place.dat";
var filePath = Path.Combine(assemblyPathInfo, fileName);
using var stream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None);
await response.GetResponseStream().CopyToAsync(stream);
}
catch(Exception ex)
{
logger.Error(ex);
}
}
我的问题是我可以重用流来对某个模型进行响应,而无需再次发送请求或打开文件数据正在流式传输到?
解决方案
为什么不使用响应缓存中间件?
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCaching();
services.AddRazorPages();
}
通过查询键可以帮助您:
var responseCachingFeature = context.HttpContext.Features.Get<IResponseCachingFeature>();
if (responseCachingFeature != null)
{
responseCachingFeature.VaryByQueryKeys = new[] { "MyKey" };
}
推荐阅读
- javascript - 如何在foreach中初始化对象以推送元素
- python - 您如何管理数据框中缺少的日期?
- python - Python 3.6:查询
- python - Selenium Python:循环中间 - 陈旧元素错误
- python - 如何在python中计算大规模逆矩阵
- c# - 动态设置@Html.Textbox() 属性?
- graph-databases - Janugraph REINDEX 卡在 INSTALLED 中
- php - 使用 php 更改使用的 woocommerce 电子邮件模板(不自定义模板)
- asp.net-mvc - Visual Studio ASP.NET Web 部署 - 每个引用自定义库的页面都给出错误 404
- git - 如何解决 git push 被拒绝的错误?