.NET 6中使用HttpWebResponse默认构造函数遇CS0619错误求解决方案
.NET 6中替代已过时HttpWebResponse默认构造函数的方案
升级到.NET 6后,直接调用new HttpWebResponse()会触发CS0619错误,因为该无参构造函数仅用于.NET内部基础设施,不允许开发者直接调用。以下是几种可行的替代方案:
方案1:使用HttpWebResponse.Create()静态方法构造实例
通过Create静态方法可以合法创建HttpWebResponse实例,若不需要真实响应内容,可传入空流:
var emptyStream = new MemoryStream(); var httpWebResponse = (HttpWebResponse)HttpWebResponse.Create(emptyStream); throw new WebException("API is not matching. Appsettings API Url: " + _appSettings.CASRelationAPI + " ; remoteUrl to WebAPIMethod: " + url, new Exception(), WebExceptionStatus.TrustFailure, httpWebResponse);
方案2:改用.NET 6推荐的异常类型
.NET Core及后续版本官方更推荐使用HttpRequestException处理HTTP请求异常,结合HttpResponseMessage可更灵活传递响应信息:
var responseMessage = new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest) { Content = new StringContent($"API is not matching. Appsettings API Url: {_appSettings.CASRelationAPI} ; remoteUrl to WebAPIMethod: {url}"), ReasonPhrase = "TrustFailure" }; throw new HttpRequestException("API mismatch error", new Exception(), responseMessage.StatusCode);
方案3:直接传递null(若无需响应对象)
如果你的场景不需要实际的HttpWebResponse实例,可直接给WebException的响应参数传null,完全规避构造过时实例的问题:
throw new WebException("API is not matching. Appsettings API Url: " + _appSettings.CASRelationAPI + " ; remoteUrl to WebAPIMethod: " + url, new Exception(), WebExceptionStatus.TrustFailure, null);
内容的提问来源于stack exchange,提问作者kumar shivam
相关产品推荐
相关产品推荐

