.NET Core 2.0中的HttpWebRequest抛出302 Found Exception

Den*_*er9 11 c# asp.net system.net.httpwebrequest asp.net-core asp.net-core-2.0

我们正在将我们的应用程序从.net框架升级到.net core 2.0.

在其中,我们使用a HttpWebRequest来联系AllowAutoRedirect设置为false 的站点.当代码执行时request.GetResponse()该站点将返回302响应,在.net框架中是可以的 - 您可以接受响应并处理它(我们在set-cookie标头值之后).

但是,在.net core 2.0中,抛出WebException:

The remote server returned an error: (302) Found.
Run Code Online (Sandbox Code Playgroud)

我的理解是不正确的,因为302应该导致抛出异常,而如果AllowAutoRedirect设置为false,那么仍然应该返回响应?有没有办法触发.net框架中遇到的相同行为?

小智 8

设置时,我得到了同样的错误AllowAutoRedirectfalse.我通过包装try-catch-block request.GetResponse()并将异常的结果分配给变量来解决问题

WebResponse response;
try {
   response = request.GetResponse();
}
catch(WebException e)) {
   if(e.Message.Contains("302")
      response = e.Result;
}
Run Code Online (Sandbox Code Playgroud)

  • 我建议对catch块稍作修改;catch(WebException ex){response =(HttpWebResponse)ex.Response; if(response.StatusCode!= HttpStatusCode.Redirect)throw(ex); 使事情变得更加简洁,而不是依赖一致的字符串消息。 (3认同)
  • 应该是 e..Response (2认同)