首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpClient失败

HttpClient失败
EN

Stack Overflow用户
提问于 2014-12-17 09:04:00
回答 2查看 1.6K关注 0票数 0

当我在iOS的模拟器上运行我的应用程序时,它工作得很好。当我在设备上运行它时,第一次调用HttpClient失败。包含HttpClient调用的类位于PCL中。它看起来像这只虫子的一个实例。

但是,将以下内容添加到iOS项目app.config的文档中的解决方案对我不起作用( system.net.http添加);

代码语言:javascript
复制
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    ......
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="2.0.5.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

编辑:

在我的app.config中,下面的方法成功地从服务器检索数据,但无法读取数据。包含ReadAsAsync(..)的底线失败并抛出异常。异常为“null”,也没有输出到终端。它在仿真器上工作得很好,但在设备上却不行。

代码语言:javascript
复制
    public async Task<List<ExternalLoginViewModel>> GetExternalLoginsAsync()
    {
        using (var client = GetNewHttpClient(false))
        {
            client.DefaultRequestHeaders.Remove("Authorization");

            var response = await client.GetAsync("api/account/externalLogins?returnUrl=/&generateState=true");

            response.EnsureSuccessStatusCode();

             return await response.Content.ReadAsAsync<List<ExternalLoginViewModel>>();
        }
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-30 11:10:35

这是通过从PCL和iOS项目卸载“”nuget包来解决的。然后重新安装在这两个。iOS项目现在有对“System.Net.Http.Extensions”和“System.Net.Http.Primatives”的引用,但不包含对“System.Net.Http”的引用。下面的绑定重定向也在app.config项目的iOS文件中使用;

代码语言:javascript
复制
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
票数 0
EN

Stack Overflow用户

发布于 2014-12-19 07:15:18

程序集绑定重定向是错误的。您的iOS项目应该有一个具有以下内容的app.config文件:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="2.0.5.0" />
        </dependentAssembly>

    </assemblyBinding>
  </runtime>
</configuration>

重定向的原因是Microsoft.Net.HttpClient包包含了System.Net.HttpClient名称空间,但是iOS和Android已经存在这个名称空间(甚至还有一些不同的特性)。在运行时,它将解析到错误的程序集,而不使用( iOS -)本地程序集。

您可以在我的iOS的PCL中找到一个基于HttpClient的WP8、Android和HttpClient演示项目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27521738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档