我正在更改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,要查看我的项目如何配置其目标:
当我尝试使用“Windows.Web.Http”添加此行时,Windows会出现下面的红色波浪线。
编辑3:我的Windows应用商店8.1应用使用了一个可移植类库,它包含一个Web API客户端,可以进行所有RESTful调用:
库(Portable)的类型是错误的类型吗?
Edit4(适用于Sunteen):您好Sunteen,Tablet.WebApi.Client只是一个类库项目,它封装了调用RESTful Web API所需的所有功能。使用该库的应用程序是Windows 8.1 Store应用程序。我已经将所有类库更改为Windows 8.1类库,而不是根据我原始屏幕截图的可移植类库。以下是解决方案的整个结构:
由于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应用程序,它将能够链接到我所有重定向的类库。这种方法是否正确?
答案 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。