C# asp.net core 5.0 RequestSizeLimit不工作
我正在使用ASP.net core 5.0,它似乎不起作用 我有以下控制器C# asp.net core 5.0 RequestSizeLimit不工作,c#,asp.net-core,.net-5,C#,Asp.net Core,.net 5,我正在使用ASP.net core 5.0,它似乎不起作用 我有以下控制器 [HttpPost("addfile")] [RequestSizeLimit(5_242_880)] // 5MB public IActionResult AddFile([FromBody] IFormFile file) 现在,当我想测试所述控制器时,我创建了一个IFormFile,如下所示: public static Mock<IFormFile> TestFile(stri
[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;
}
var bigContent = RandomString(50 * 1024 * 1024);
var testFile = TestFile("calendar.ical", bigContent);
...
var result = controller.AddFile(testFile.Object);
信息:RandomString
返回给定长度的字符串(不是最优化的方式):
公共静态字符串RandomString(int-length)
{
StringBuilder=新的StringBuilder();
随机=新随机();
char ch;
for(int i=0;i
我希望状态代码不是200-OK。
我做错了什么吗?您正在对控制器进行单元测试-不幸的是,
[RequestSizeLimit]
属性在请求管道中被实现为一个过滤器-并且过滤器没有作为单元测试的一部分运行
这是描述的
设置控制器操作的单元测试,以关注控制器的行为。控制器单元测试避免了过滤器、路由和模型绑定等场景。涵盖共同响应请求的组件之间交互的测试由集成测试处理。有关集成测试的详细信息,请参阅ASP.NET Core中的集成测试
可以找到有关集成测试的更多信息。您正在对控制器进行单元测试-不幸的是,
[RequestSizeLimit]
属性在请求管道中作为筛选器实现-并且筛选器不作为单元测试的一部分运行
这是描述的
设置控制器操作的单元测试,以关注控制器的行为。控制器单元测试避免了过滤器、路由和模型绑定等场景。涵盖共同响应请求的组件之间交互的测试由集成测试处理。有关集成测试的详细信息,请参阅ASP.NET Core中的集成测试
可以找到有关集成测试的更多信息。这似乎是Web服务器的配置错误,可能有帮助这似乎是Web服务器的配置错误,可能有帮助哦,我不知道。非常感谢你的回答。哦,我不知道。非常感谢你的回答。
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();
}