[英]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.