簡體   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