如何将“Windows.Web.Http”添加到您的项目中?

时间:2018-01-25 17:18:40

标签: windows-8.1 windows-10-universal dotnet-httpclient

我正在更改Windows 8.1商店应用程序以使用TLS 1.2。最近将所有Web API移至HTTPS并强制整个流量网络使用TLS 1.2的客户端要求这样做。我的商店应用程序开始与Web API存在通信问题,原因是它没有强制调用Web API来使用TLS 1.2。经过一些研究,我看到我用于通信的System.Net.Http类(HttpClient和HttpClientHandler)不会帮助我。我需要使用Windows.Web.Http中的类似API。从我的阅读中,我还看到我需要重新定位.NET Framework 4.6和Windows Universal 10.0解决方案中的所有项目。这引发了很多变化(对于某些项目,我必须在更改目标之前卸载所有NuGet包)。无论如何,我终于准备开始使用Windows.Web.Http命名空间中的HttpClient类了。问题是我无法找到我需要安装哪个NuGet包来将此命名空间引入我的项目。仅仅输入“使用Windows.Web.Http”是不够的,因为命名空间是未知的。

有关如何将API添加到项目中的任何想法?

TIA, 编

编辑1:对于Sunteen,要查看我的项目如何配置其目标:

enter image description here

当我尝试使用“Windows.Web.Http”添加此行时,Windows会出现下面的红色波浪线。

编辑2:以下是“项目”选项卡在项目设置中的外观: enter image description here

编辑3:我的Windows应用商店8.1应用使用了一个可移植类库,它包含一个Web API客户端,可以进行所有RESTful调用:

enter image description here

库(Portable)的类型是错误的类型吗?

Edit4(适用于Sunteen):您好Sunteen,Tablet.WebApi.Client只是一个类库项目,它封装了调用RESTful Web API所需的所有功能。使用该库的应用程序是Windows 8.1 Store应用程序。我已经将所有类库更改为Windows 8.1类库,而不是根据我原始屏幕截图的可移植类库。以下是解决方案的整个结构:

enter image description here

由于Tablet.WebApi.Client库是包含用于调用RESTful Web API的功能的库,因此我需要使用Windows.Web.Http替换System.Net.Http.HttpClient类。版本

我仍然对XXXXXTabletApp需要的项目类型感到困惑。我可以重新定位所有类库以使用.NET Framework 4.6和Windows Universal 10.0,但我不能对XXXXXTabletApp项目执行相同的操作,因为那是一个清晰的Windows 8.1 Store应用程序。我想解决方案是创建一个新的UWL应用程序,它将能够链接到我所有重定向的类库。这种方法是否正确?

2 个答案:

答案 0 :(得分:1)

  

问题是我无法找到我需要安装哪个NuGet包来将此命名空间引入我的项目。

您不需要任何Nuget包来使用Windows.Web.Http命名空间。检查其中一个API,例如HttpClient类,您会发现此类只需要您的UWP应用程序是目标版本10240或更高版本。换句话说,如果您的应用是UWP应用,则可以成功添加using Windows.Web.Http 如果您已经正确地将应用程序重新定位到Windows Universal 10,它应该可以正常工作。更多详情请参阅Move from Windows Runtime 8.x to UWP

如果您仍有问题要添加Windows.Web.Http,则在重新定位时可能会出现问题。在这种情况下,请分享更多细节。

更新

好像你没有明确表达你的问题。根据您的屏幕截图,您正在使用的项目模板应该是Class Library (Legacy Portable),而不是Windows 8.1应用程序。对于Windows 8.1应用程序项目,它无法重新定位,如图所示。在这种情况下,Windows.Web.Http不支持此类库。您只能在UWP应用中使用命名空间,请检查Create your first app

此外。正如Visual Studio 2017所提到的,Class Library (Legacy Portable)legacy你不应该使用它,而新的方式是.NET Standard和.NET Core。

答案 1 :(得分:0)

我采用的最终解决方案是将整个应用程序重写为通用Windows平台应用程序。所有类库都重新创建为UWP类库。由于PortiLog方法在UWP中不可用,因此必须重写日志记录功能。有了这个,我可以使用Windows.Web.Http命名空间中的HttpClient。