繁体   English   中英

ASP.NET 核心 3:RedirectResult(“MyList”) 产生的集成测试期间的响应 404

[英]ASP.NET Core 3: response 404 during integration test produced by RedirectResult(“MyList”)

我有两个页面/MyArea/Pages/Create.cshtml/MyArea/Pages/MyList.cshtml 所以我创建了一个实体并用return RedirectResult("MyList")完成它。

这适用于浏览器。

但是在集成测试期间(使用Microsoft.AspNetCore.Mvc.Testing package 版本 3.0),当我打开/MyArea/Create页面并发布表单时:

 var createConfirmHttpResponseMessage = await httpClient.SendAsync(postRequest1);
 Assert.IsTrue(createConfirmHttpResponseMessage.StatusCode == HttpStatusCode.OK);

这一切都回来了

{StatusCode:404,ReasonPhrase:'未找到',版本:1.1,内容:System.Net.Http.StreamContent,标题:{内容长度:0}}

创建实体并调用return RedirectResult("MyList")

报告的请求消息: {Method: GET, RequestUri: 'http://localhost/MyList', Version: 1.1, Content: <null>, Headers: { Cookie: .AspNetCore.Antiforgery.... Cookie: .AspNetCore.Antiforgery....}}

我看到请求的消息不正确:RequestUri 应该包含一个区域 //localhost/ MyArea /MyList,

我应该在集成测试代码中添加什么样的“当前位置管理”来强制 httpClient“尊重”该区域?

PS 我可以这样写,在服务器端return RedirectResult("/MyArea/MyList")但现在我想知道如何在集成测试中重复浏览器的行为?

到目前为止,我发现的一个选项是设置clientOptions.AllowAutoRedirect=false ,然后手动处理重定向。 奇怪的是 HttpClient 在自动重定向期间不“尊重”当前位置。 这似乎是HttpClient的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM