ASP.NET Core 5.0 RequestSizeLimit无法正常工作

用户名

我正在使用ASP.net core 5.0,但似乎RequestSizeLimit无法正常工作。

我有以下控制器

[HttpPost("addfile")]
[RequestSizeLimit(5_242_880)] // 5MB
public IActionResult AddFile([FromBody] IFormFile file)

现在,当我要测试所述控制器时,我将创建一个IFormFile类似这样的代码:

public static Mock<IFormFile> TestFile(string filename, string content)
{
    var fileMock = new Mock<IFormFile>();

    var ms = new MemoryStream();
    var writer = new StreamWriter(ms);
    writer.Write(content);
    writer.Flush();
    ms.Position = 0;
    fileMock.Setup(_ => _.OpenReadStream()).Returns(ms);
    fileMock.Setup(_ => _.FileName).Returns(filename);
    fileMock.Setup(_ => _.Length).Returns(ms.Length);

    return fileMock;
}

在测试中,我现在添加50MB的内容,如下所示:

var bigContent = RandomString(50 * 1024 * 1024);
var testFile = TestFile("calendar.ical", bigContent);
...
var result = controller.AddFile(testFile.Object);

信息:RandomString返回给定长度的字符串(不是最优化的方式):

public static string RandomString(int length)
{
    StringBuilder builder = new StringBuilder();
    Random random = new Random();
    char ch;
    for (int i = 0; i < length; i++)
    {
        ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
        builder.Append(ch);
    }
    return builder.ToString();
}

我希望状态代码不是200-确定。难道我做错了什么?

简·吉德

您正在对控制器进行单元测试-不幸的[RequestSizeLimit]是,属性在请求管道中实现为过滤器-并且过滤器未作为单元测试的一部分运行。

在docs中进行了描述

设置控制器动作的单元测试以关注控制器的行为。控制器单元测试避免了诸如过滤器,路由和模型绑定之类的情况。涵盖集体响应请求的组件之间的交互的测试由集成测试处理。有关集成测试的更多信息,请参见ASP.NET Core中的集成测试。

有关集成测试的更多信息,请参见此处

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ASP Net Core ConfirmEmail无法正常工作

ASP.NET Core MVC Ajax无法正常工作

LINQ 查询无法正常工作 ASP.NET CORE MVC

ASP.Net Core CookieRequestCultureProvider无法正常工作

Asp.net Core UseExceptionHandler无法正常工作POST请求

来自 Identity 的 FullName 无法正常工作 asp .net core 3.0

Asp.Net 5/Core app.UseExceptionHandler() 不工作

将Asp.Net Core 1转换为Core 2后Jwt无法正常工作

ASP.NET 5(ASP.NET Core)-无法与IIS一起运行

Bootstrap Accordion 3.3.7在foreach循环中崩溃asp.net core 1.1无法正常工作

ASP.NET Core 3.0 MVC连接中的SignalR是否仍然无法正常工作?

属性路由在ASP.NET Core 3.0中无法正常工作

发布到Azure后ASP.NET Core应用无法正常工作

ASP.Net Core Server中的角度PWA-Serviceworker-Cache无法正常工作

ASP.NET Core和JQuery兼容AJAX无法正常工作

Angular4 Material主题在ASP.NET Core项目上无法正常工作

自托管ASP.NET Core 2.0:TagHelper无法正常工作

我添加的Asp.net Core 2.0 MVC CSS无法正常工作

将ASP.NET Core应用发布到Azure无法正常工作

ASP.NET Core自定义标签助手无法正常工作

Cookie 身份验证与 JWT 身份验证 ASP.NET CORE 无法正常工作

使用VSCode的Asp.Net Core本地化无法正常工作

ASP.NET CORE 3.0 应用到默认网站/MySite 下的 IIS 无法正常工作

从asp net 5迁移到asp net core时出错

ASP.NET Core 5 DbSet totable

ASP.NET 5,.NET Core和ASP.NET Core 5有什么区别?

角5; ASP.NET Web API http.delete无法正常工作

Asp.net Core 2.0 RequestSizeLimit属性不起作用

.Net Core MemoryCache PostEvictionCallback无法正常工作