C# 能否从Silverlight中的另一个PCL使用HttpClient PCL?

C# 能否从Silverlight中的另一个PCL使用HttpClient PCL?,c#,silverlight,silverlight-5.0,portable-class-library,dotnet-httpclient,C#,Silverlight,Silverlight 5.0,Portable Class Library,Dotnet Httpclient,早些时候,我发布了HttpClient在Silverlight应用程序中从另一个可移植类库使用时引发的异常。这里有一个类似的问题 为了研究并更好地说明这个问题,我构建了一个小型Silverlight应用程序,它只尝试使用Microsoft.Net.HTTP NuGet包(HttpClient库)发出HTTP请求。测试代码非常简单: public class HttpClientRunner { public Task<string> ExecuteRequestAsync()

早些时候,我发布了HttpClient在Silverlight应用程序中从另一个可移植类库使用时引发的异常。这里有一个类似的问题

为了研究并更好地说明这个问题,我构建了一个小型Silverlight应用程序,它只尝试使用Microsoft.Net.HTTP NuGet包(HttpClient库)发出HTTP请求。测试代码非常简单:

public class HttpClientRunner
{
    public Task<string> ExecuteRequestAsync()
    {
        using (var client = new HttpClient())
        {
            return client.GetStringAsync("http://someurl/");
        }
    }
}
公共类HttpClientRunner
{
公共任务执行器请求同步()
{
使用(var client=new HttpClient())
{
返回client.GetStringAsync(“http://someurl/");
}
}
}
  • 当我将此代码包含在Silverlight应用程序或Silverlight类库中时,它可以正常工作
  • 当我在一个可移植类库(NET45+SL5+WinPhone8+Win8,我也尝试了其他配置文件)中包含这段代码,并从Silverlight 5调用它时,它会抛出一个关于不受支持的自定义凭据的异常
  • 在调用上面的测试代码之前,我找到了一个解决方法并添加了一行WebRequest.RegisterPrefix(“http://”,System.Net.Browser.WebRequestCreator.ClientHttp)。这有助于消除凭据异常,但现在我得到了有关System.Net.Browser.ClientHttpWebRequest.set_AllowAutoRedirect方法的NotImplemented异常

  • 我暂时放弃了从PCL打电话给HttpClient的想法。我链接了Silverlight项目中的C#文件,然后它就工作了。但这种行为表明Silverlight平台上的HttpClient PCL实现有问题。我想知道当从另一个PCL调用HttpClient时,是否有人成功实现了该场景。

    您是否引用了引用PCL的SL5应用程序中的Microsoft.Net.Http NuGet包?

    是的,PCL和SL5应用程序的包列表中都包含Microsoft.Net.Http。我还尝试将Microsoft.Net.Http安装到承载SL5应用程序的网站中,但没有任何帮助(我认为这是没有必要的)。