我正在尝试使用 Asp.NET Core 创建一个 Web API,该 API 公开路由以启动和取消大文件的长时间下载。服务器应该能够同时处理多个下载。
WebClient.DownloadFileAsync为了有一个短的响应时间并返回一个downloadId供以后使用。WebClient 的实例作为值存储在一个静态字典中,其对应key的自然是downloadId.WebClient.CancelAsync通过访问与downloadId键对应的字典的值检索到的客户端实例上取消下载。当下载完成而不被取消时,以下代码完美运行;AsyncCompletedEventHandler(OnDownloadFileCompleted在这种情况下)被正确调用。
问题:调用 时WebClient.CancelAsync,文件会继续下载并且OnDownloadFileCompleted不会立即调用。WebClient 似乎在调用处理程序之前等待下载完成。然而,在这两种情况下,属性都AsyncCompletedEventArgs.Canceled被正确设置(例如,true如果WebClient.CancelAsync确实被调用了。
任何帮助将不胜感激!
下载控制器.cs
[Route ("api/download")]
public class DownloadController {
private readonly DownloadService service;
public DownloadController (DownloadService service) {
this.service = service;
}
[Route ("start")]
[HttpPost]
public string Start ([FromForm] string fileUrl) => this.service.StartDownload (fileUrl);
[Route ("cancel")]
[HttpPost] …Run Code Online (Sandbox Code Playgroud) Postman有没有办法在执行请求 A 之前预先执行请求 B ?
上下文:我创建了一个管理一组 Web 服务的Symfony应用程序。大多数路由只有在用户经过完全身份验证后才能调用(对于熟悉框架的人来说,可以使用form_login和防火墙)
因此,我必须先打电话:
发布/登录
在能够打电话之前
获取 /some_secured_route
(返回 JSON 响应)
当我在Postman 构建器中连续手动调用路由时,效果很好。
但是,我正在尝试创建一个在Postman runner中运行的测试集合 。在测试安全路由之前,如何调用/login请求?
任何帮助或相关帖子的链接将不胜感激。祝大家度过愉快的一天。
目前使用Postman REST 客户端来调试我的 ajax 调用,我想知道是否有办法在Symfony 探查器内显示 ajax 响应的响应内容?
我似乎只能在“响应”选项卡中找到“响应标头”...
我可能会误导自己,执行这样的功能甚至是分析器的角色吗?
任何回复、解释或相关主题的链接将不胜感激。
谢谢你,有一个美好的一天!
有没有一种方法可以使用通用逻辑来检索磁盘上的文件大小,而不管底层操作系统如何?以下代码适用于Windows,但显然不适用于Linux.
public static long GetFileSizeOnDisk(string file)
{
FileInfo info = new FileInfo(file);
uint dummy, sectorsPerCluster, bytesPerSector;
int result = GetDiskFreeSpaceW(info.Directory.Root.FullName, out sectorsPerCluster, out bytesPerSector, out dummy, out dummy);
if (result == 0) throw new Win32Exception();
uint clusterSize = sectorsPerCluster * bytesPerSector;
uint hosize;
uint losize = GetCompressedFileSizeW(file, out hosize);
long size;
size = (long)hosize << 32 | losize;
return ((size + clusterSize - 1) / clusterSize) * clusterSize;
}
[DllImport("kernel32.dll")]
static extern uint GetCompressedFileSizeW([In, MarshalAs(UnmanagedType.LPWStr)] string lpFileName,
[Out, MarshalAs(UnmanagedType.U4)] out …Run Code Online (Sandbox Code Playgroud) 假设策略SomePolicy包含IAuthorizationRequirement添加的列表,如下所示:
services.AddAuthorization(options =>
{
options.AddPolicy("SomePolicy", policy =>
{
policy.AddRequirements(new FooRequirement());
policy.AddRequirements(new BarRequirement());
policy.AddRequirements(new YetAnotherRequirement());
});
});
Run Code Online (Sandbox Code Playgroud)
在执行策略时,我想知道哪个需求失败并阻止检查其余需求。
查看我可以用 API 做什么,似乎在执行策略后,我唯一能做的就是检索失败的需求列表。
var authorizationResult = _authorizationService.AuthorizeAsync(this.User, ressource, "SomePolicy");
var failedRequirements = authorizationResult.Result.Failure.FailedRequirements
Run Code Online (Sandbox Code Playgroud)
基于策略的方法是否不适合我想要实现的目标?我应该为每个要求创建专门的策略吗?
任何帮助将不胜感激,谢谢!
在Moment.js中是否有办法获得本地化日期的短年格式(仅限两位数)?
moment().format('l'); // 1/23/2017
moment().format('<someSpecialFormat>'); // expected: 1/23/17
Run Code Online (Sandbox Code Playgroud)
任何帮助或相关主题的链接将不胜感激.
谢谢,