我正在测试一个ASP.NET MVC应用程序。有一个控制器的方法看起来像:
[HttpPost]
public async Task<ActionResult> Login(LoginForm loginForm)
{
// Do some work
return RedirectToAction(nameof(Admins));
}
Admins方法的签名如下:
public async Task<ActionResult> Admins(ExtendedPagingForm form)
我尝试像这样调用它:
var url = $"{TestConfig.Instance.ServerUrl}/{actionMethod}";
var sendForm = GetFormContent(new MultipartFormDataContent(), sendData); //login and password
HttpResponseMessage response = await httpClient.PostAsync(url, sendForm);
响应包含带有信息的内部服务器错误:
IOException:意外结束Stream,内容可能已经存在 已被其他组件阅读。
On MSDN据说RedirectToAction向浏览器返回HTTP 302响应,这会导致浏览器向指定的操作发出GET请求。因此它既不能在浏览器中工作,也不能在Postman中工作,但它在那里工作正常。我可以强制我的httpClient发送带有数据或模拟请求体的POST请求吗?
答案 0 :(得分:0)
我已经解决了这个问题。
我将MultipartFormDataContent
更改为FormUrlEncodedContent
并且可以正常工作
答案 1 :(得分:0)
就我而言,我已经在使用FormUrlEncodedContent
,但它仍在发生。我的是Xamarin项目。
重新启动Visual Studio和模拟器对我有帮助。