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

时间:2015-03-12 23:22:06

标签: c# .net httpwebrequest httpwebresponse system.net.httpwebrequest

对于产品代码实例化这些类型可能没有意义,但是对于构造函数的弃用使得使用Http WebRequest/Response实现{{1}}的单元测试客户端比它更麻烦应该。我认为将构造函数移开并没有任何价值,并且明显有价值,所以他们弃用的技术原因是什么?

1 个答案:

答案 0 :(得分:2)

嗯,为什么你需要HttpWebRequest的构造函数?与WebRequest.Create相比,我无法看到它的任何偏好,file://被建议作为从一开始就在所有版本中创建此类请求的优先方式。

此方法将HttpWebRequest作为WebRequest返回,但您仍然可以根据需要将其转换为直接类型。如果您提供其他协议(ftp://Obsolete list),则会返回相应的类型。

我认为这个deriving the WebRequest class是为所有将要使用的平台标准化.NET Core的一部分,并且维护{{1}更加简单在代码的一个单一点创建。

<强>更新
我认为你已经看到了关于IWebRequestCreate的这篇文章,所以我只是在这里写下我的另一个观点:

当您从WebRequest取消时,您需要两点:

正如MSDN所说:

  

默认情况下,WebRequest类已注册为HTTP和HTTPS方案的服务请求。尝试为这些方案注册不同的HttpWebRequest后代将失败。

因此,Microsoft希望控制WebRequesthttp面向的类,并且不希望任何人用自己的类替换此功能。我认为这可以通过一些安全问题来完成。悲伤却又是真的。