小编Pie*_*aut的帖子

WebClient.CancelAsync — 文件仍在下载

我正在尝试使用 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确实被调用了。

  • 我错过了什么吗?
  • 是否有更好/更智能的模式来处理 WebAPI 中的多次下载?

任何帮助将不胜感激!

下载控制器.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)

.net c# asp.net webclient asp.net-core

7
推荐指数
1
解决办法
1994
查看次数

邮递员自定义身份验证

Postman有没有办法在执行请求 A 之前预先执行请求 B ?

上下文:我创建了一个管理一组 Web 服务的Symfony应用程序。大多数路由只有在用户经过完全身份验证后才能调用(对于熟悉框架的人来说,可以使用form_login防火墙)

因此,我必须先打电话:

发布/登录

  • 用户名
  • 密码

在能够打电话之前

获取 /some_secured_route

(返回 JSON 响应)

当我在Postman 构建器中连续手动调用路由时,效果很好。


但是,我正在尝试创建一个在Postman runner中运行的测试集合 。在测试安全路由之前,如何调用/login请求?

  • 有没有办法在 Postman 构建器的预请求脚本中执行操作
  • Postman支持多种类型的授权(基本身份验证、摘要身份验证、OAuth...)。它是否以某种方式支持客户?

任何帮助或相关帖子的链接将不胜感激。祝大家度过愉快的一天。

authentication web-services symfony postman

6
推荐指数
1
解决办法
5232
查看次数

Symfony Profiler:显示响应内容?

目前使用Postman REST 客户端来调试我的 ajax 调用,我想知道是否有办法在Symfony 探查器内显示 ajax 响应的响应内容

我似乎只能在“响应”选项卡中找到“响应标头”...

在此输入图像描述

我可能会误导自己,执行这样的功能甚至是分析器的角色吗?

任何回复、解释或相关主题的链接将不胜感激。

谢谢你,有一个美好的一天!

php ajax profiler symfony postman

5
推荐指数
1
解决办法
1706
查看次数

C#.net核心 - 在磁盘上获取文件大小 - 跨平台解决方案

有没有一种方法可以使用通用逻辑来检索磁盘上的文件大小,而不管底层操作系统如何?以下代码适用于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)

.net c# linux cross-platform .net-core

5
推荐指数
1
解决办法
430
查看次数

ASP .NET Core 授权处理程序:获取单个失败要求

假设策略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)

基于策略的方法是否不适合我想要实现的目标?我应该为每个要求创建专门的策略吗?

任何帮助将不胜感激,谢谢!

c# authorization asp.net-core

5
推荐指数
1
解决办法
332
查看次数

Moment.js中本地化格式的两位数年份格式

在Moment.js中是否有办法获得本地化日期的短年格式(仅限两位数)?

moment().format('l'); // 1/23/2017

moment().format('<someSpecialFormat>'); // expected: 1/23/17
Run Code Online (Sandbox Code Playgroud)

任何帮助或相关主题的链接将不胜感激.

谢谢,

javascript date momentjs

4
推荐指数
1
解决办法
926
查看次数