【问题标题】:Reference to System.net on PCL and MVVMCross参考 PCL 和 MVVMCross 上的 System.net
【发布时间】:2013-05-24 19:17:53
【问题描述】:

我正在使用 MVVMCross 和 Mono 以及 VisualStudio 2012 和稳定版 Xamarin 构建我的 PCL 核心库。 我有以下编译错误。

错误 3“System.Net.WebHeaderCollection”不包含“Add”的定义,并且找不到接受“System.Net.WebHeaderCollection”类型的第一个参数的扩展方法“Add”(您是否缺少使用指令还是程序集引用?)

当尝试这样做时:

string address = "http://www.test.com/;

            HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;  
            request.Method = "GET";
            request.Accept = "application/json";
            request.Headers.Add(HttpRequestHeader.Cookie, "customcookie");

HttpWebRequest 被很好地引用。

注意相同的代码在 Mac 上的 Xamarin Studio 中工作。

【问题讨论】:

    标签: visual-studio-2012 mono xamarin mvvmcross portable-class-library


    【解决方案1】:

    PCL System.Net 堆栈是可移植的 - 这意味着它不具备全部功能。

    对于 PCL .Net 堆栈中的 cookie,我相信您可以在 Request 上设置 CookieCollection,然后您可以在 Response 上检查 Cookies

    如果这对您来说还不够,那么您将不得不使用某种“注入”技术在每个平台上实现您想要的功能 - 例如你可以使用plugins in mvvmcross


    我认为您可能缺少的一件事是当前 xamarin 无法正确构建 PCL - 这即将发生变化,但现在 xamarin 会针对其完整的 monotouch 或 monodroid 堆栈构建 PCL。因此,xamarin 可能会错误地报告 pcl 功能可用性 - 并且基于 xamarin 构建的 PCL 肯定不可移植 - 请参阅 http://slodge.blogspot.co.uk/2013/01/almost-portable-binaries.html

    【讨论】:

    • 这是我请求的嵌入式 cookie。我没有从响应中读取...我尝试使用 MVVMCross 中的网络插件做一些事情但没有工作...Mac 上 Xamarin Studio 上的相同代码可以很好地链接 system.net 库...
    • 正如 Stuart 提到的 WebHeaderCollection 的便携式版本缺少 Add 方法。它确实具有 item[] 运算符 (msdn.microsoft.com/en-us/library/0hb8kfxw.aspx),因此您可以使用它。通常,当 PCL 中缺少成员时,是因为您所定位的配置文件之一不支持该成员。 CookieContainer 也可以。
    • 您能解释一下相同代码在 Mac 上与 Xamarin 一起工作的方式吗?确定 Profile 不同,但库必须相同...
    • 请尝试提出一个完整的问题。我完全不明白你的意思。
    【解决方案2】:

    我有最新的 mvvmcross 和 Xamarin。当我尝试设置 request.CookieContainer 时出现异常。 在Xamarin bugzilla herehere 中描述

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      • 2013-05-31
      • 2013-07-28
      • 1970-01-01
      • 1970-01-01
      • 2013-07-13
      相关资源
      最近更新 更多