You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 6 Web API中解决HttpWebRequest找不到的问题

解决ASP.NET Core 6中HttpWebRequest/WebResponse找不到的问题

问题原因

  • 命名空间缺失:HttpWebRequest和WebResponse属于System.Net命名空间,代码中未添加对应的using指令。
  • 类型依赖变更:在.NET Core/.NET 6中,HttpWebRequest/WebResponse已被标记为过时,默认框架引用不再包含这些类型的实现,需额外安装NuGet包才能使用。
  • 代码逻辑错误:原代码中CreateWebRequest方法返回HttpResponseMessage,却被赋值给HttpWebRequest类型变量,存在明显的类型不匹配问题。

解决方案

推荐使用.NET Core官方推荐的HttpClient替代过时的HttpWebRequest,以下是修正后的完整代码:

using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.IO;

// 封装SOAP请求发送逻辑
private static async Task<HttpResponseMessage> SendSoapRequestAsync(string url, string action, string xmlString)
{
    using var httpClient = new HttpClient();
    // 构造SOAP请求内容,传入完整的XML信封
    var httpContent = new StringContent(xmlString, Encoding.UTF8, "text/xml");
    // 添加SOAPAction头
    httpContent.Headers.Add("SOAPAction", action);
    return await httpClient.PostAsync(url, httpContent);
}

public static async Task<string> SendSoapWebRequest(string url, string action, string xmlString)
{
    var response = await SendSoapRequestAsync(url, action, xmlString);
    // 可选:确保请求成功,若失败则抛出HttpRequestException
    response.EnsureSuccessStatusCode();
    
    // 读取响应内容
    using var streamReader = new StreamReader(await response.Content.ReadAsStreamAsync());
    return await streamReader.ReadToEndAsync();
}

方案说明

  • 替代过时类型:HttpClient是.NET Core/.NET 6中推荐的异步HTTP请求工具,性能和可靠性更优,符合现代.NET开发的最佳实践。
  • 修正类型不匹配:移除了原代码中返回类型与接收类型不兼容的错误逻辑,全程使用async/await异步编程模型,避免阻塞线程。
  • 简化逻辑:合并了原代码中拆分的方法,省去手动操作请求流的繁琐步骤,让代码逻辑更清晰。

若坚持使用HttpWebRequest(不推荐)

如果因特殊需求必须使用HttpWebRequest,需执行以下步骤:

  1. 安装NuGet包:System.Net.Requests
  2. 添加必要的using指令:
    using System.Net;
    using System.IO;
    
  3. 修正原代码中的类型不匹配错误,确保CreateWebRequest方法返回HttpWebRequest类型(而非HttpResponseMessage)。

内容的提问来源于stack exchange,提问作者Bami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:20:39