C# ASP.NET Core 3:RedirectResult(“MyList”)生成的集成测试期间的响应404

C# ASP.NET Core 3:RedirectResult(“MyList”)生成的集成测试期间的响应404,c#,asp.net-core,integration-testing,razor-pages,asp.net-core-3.0,C#,Asp.net Core,Integration Testing,Razor Pages,Asp.net Core 3.0,我有两个页面/MyArea/pages/Create.cshtml和/MyArea/pages/MyList.cshtml。因此,我创建了一个实体,并使用return RedirectResult(“MyList”)完成它 var createConfirmHttpResponseMessage = await httpClient.SendAsync(postRequest1); Assert.IsTrue(createConfirmHttpResponseMessage.StatusCo

我有两个页面
/MyArea/pages/Create.cshtml
/MyArea/pages/MyList.cshtml
。因此,我创建了一个实体,并使用
return RedirectResult(“MyList”)
完成它

 var createConfirmHttpResponseMessage = await httpClient.SendAsync(postRequest1);
 Assert.IsTrue(createConfirmHttpResponseMessage.StatusCode == HttpStatusCode.OK);
这在浏览器中工作

 var createConfirmHttpResponseMessage = await httpClient.SendAsync(postRequest1);
 Assert.IsTrue(createConfirmHttpResponseMessage.StatusCode == HttpStatusCode.OK);
但是在集成测试期间(使用Microsoft.AspNetCore.Mvc.Testing软件包3.0版),当我打开
/MyArea/Create
页面并发布表单时:

 var createConfirmHttpResponseMessage = await httpClient.SendAsync(postRequest1);
 Assert.IsTrue(createConfirmHttpResponseMessage.StatusCode == HttpStatusCode.OK);
所有这些都会回来

 var createConfirmHttpResponseMessage = await httpClient.SendAsync(postRequest1);
 Assert.IsTrue(createConfirmHttpResponseMessage.StatusCode == HttpStatusCode.OK);
{StatusCode:404,ReasonPhrase:'notfound',版本:1.1,内容:System.Net.Http.StreamContent,标题:{Content Length:0}}

 var createConfirmHttpResponseMessage = await httpClient.SendAsync(postRequest1);
 Assert.IsTrue(createConfirmHttpResponseMessage.StatusCode == HttpStatusCode.OK);
实体已创建,并调用了
返回重定向结果(“MyList”)

 var createConfirmHttpResponseMessage = await httpClient.SendAsync(postRequest1);
 Assert.IsTrue(createConfirmHttpResponseMessage.StatusCode == HttpStatusCode.OK);
报告的请求消息:
{Method:GET,RequestUri:'http://localhost/MyList,版本:1.1,内容:,标题:{Cookie:.AspNetCore.Antiforgery….Cookie:.AspNetCore.Antiforgery….}

 var createConfirmHttpResponseMessage = await httpClient.SendAsync(postRequest1);
 Assert.IsTrue(createConfirmHttpResponseMessage.StatusCode == HttpStatusCode.OK);
我发现请求的消息不正确:RequestUri应该包含一个区域//localhost/MyArea/MyList

 var createConfirmHttpResponseMessage = await httpClient.SendAsync(postRequest1);
 Assert.IsTrue(createConfirmHttpResponseMessage.StatusCode == HttpStatusCode.OK);
我应该在集成测试代码中添加什么样的“当前位置管理”来强制httpClient“尊重”该区域

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

另外,我可以这样写,在服务器端
返回重定向结果(“/MyArea/MyList”)
,但现在我想知道如何在集成测试中重复浏览器的行为

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

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