为什么从 .NET 中删除了 HttpWebRequest 和 HttpWebResponse 的构造函数?

Why were constructors for HttpWebRequest and HttpWebResponse removed from .NET?

也许产品代码实例化这些类型没有意义,但是构造函数的弃用使得使用 WebRequest/ResponseHttp 实现的单元测试客户端比它更麻烦应该。我认为取消构造函数没有任何价值,拥有它们也很明显,那么弃用它们的技术原因是什么?

嗯,为什么你需要 HttpWebRequest 的构造函数?与 WebRequest.Create 相比,我看不出它有任何偏好,这被建议作为从一开始就在所有版本中创建此类请求的首选方式。

此方法是 return 将 HttpWebRequest 转换为 WebRequest,但您仍然可以根据需要将其转换为直接类型。如果你再提供一些其他的协议,如file:// or ftp://,它会return对应的类型。

我认为这个 Obsolete list 是将使用的所有平台标准化 .NET Core 的一部分,并且维护 WebRequest 创建会简单得多在一点代码中。

更新:
我想你已经看过这篇关于 deriving the WebRequest class 的文章,所以我在这里写下我的另一份意见:

当你从WebRequest中脱颖而出时,你需要两点:

正如 MSDN 所说:

The HttpWebRequest class is registered to service requests for HTTP and HTTPS schemes by default. Attempts to register a different WebRequest descendant for these schemes will fail.

所以 Microsoft 想要控制面向 httphttps 的 classes,并且不希望任何人用自己的功能替换此功能。我认为出于某些安全考虑,可以这样做。悲伤但真实。