【问题标题】:RestSharp is crashing with Unity3d when running on iPhone在 iPhone 上运行时,RestSharp 与 Unity3d 崩溃
【发布时间】:2015-07-14 13:27:22
【问题描述】:

我正在尝试将 RestSharp 附加到 Unity3d。 原始的 RestSharp 单声道库在编辑器中运行良好,但在设备上它会因调用堆栈而崩溃

ArgumentOutOfRangeException: Argument is out of range.
Parameter name: options
at System.Security.Cryptography.X509Certificates.X509CertificateCollection.GetEnumerator () [0x00000] in <filename unknown>:0 
at System.Text.RegularExpressions.Regex.validate_options (RegexOptions options) [0x00000] in <filename unknown>:0 
at System.Text.RegularExpressions.Regex..ctor (System.String pattern, RegexOptions options) [0x00000] in <filename unknown>:0 
at RestSharp.RestClient..ctor () [0x00000] in <filename unknown>:0 
at RestSharp.RestClient..ctor (System.String baseUrl) [0x00000] in <filename unknown>:0 

这意味着异常出现在 ctor RestClient(string) 内部,它是默认 ctor 的包装器。在默认 ctor 内部,有

public RestClient()
    {
#if WINDOWS_PHONE
        this.UseSynchronizationContext = true;
#endif
        this.ContentHandlers = new Dictionary<string, IDeserializer>();
        this.AcceptTypes = new List<string>();
        this.DefaultParameters = new List<Parameter>();

        // register default handlers
        this.AddHandler("application/json", new JsonDeserializer());
        this.AddHandler("application/xml", new XmlDeserializer());
        this.AddHandler("text/json", new JsonDeserializer());
        this.AddHandler("text/x-json", new JsonDeserializer());
        this.AddHandler("text/javascript", new JsonDeserializer());
        this.AddHandler("text/xml", new XmlDeserializer());
        this.AddHandler("*+json", new JsonDeserializer());
        this.AddHandler("*+xml", new XmlDeserializer());
        this.AddHandler("*", new XmlDeserializer());

        this.FollowRedirects = true;
    }

此时,我看不到 Regex ctor 的下一步出现在哪里。有什么想法吗?

【问题讨论】:

    标签: c# ios unity3d mono restsharp


    【解决方案1】:

    我们在使用 Unity 5.2.1 构建独立的 Windows 项目时遇到了同样的问题。在编辑器中一切正常,直到您创建一个构建。

    我认为问题与“AddHandler”方法中使用的“structuredSyntaxSuffixWildcardRegex”有关。虽然我不知道它失败的确切原因,但我知道以前版本的 RestSharp 确实对我们有用。

    我猜你也在使用最新的 RestSharp 版本,你可以试试RestSharp v105.1.0 吗?

    它似乎从 Restshap v105.2.1 停止运行,我正在检查提交以查看可能的罪魁祸首。如果我找到解决方案,我会分叉并修复它。

    另外我必须通知您,在我们的案例中,由于缺少 Mono.Posix 库,GZIP 解压缩也无法正常工作。当服务器返回一个 gzipped 响应并且 RestClient 允许它时,就会发生此问题。我们必须通过使用 'Fabman08' 的修复来解决这个问题,这使得 decompression configurable

    【讨论】:

    • 您好,感谢您的提示。我现在不能尝试,因为我正忙于另一个项目,但如果你有类似的问题 - 请随时告诉我,如果你有问题解决了。
    【解决方案2】:

    我已经分叉了 RestSharp 存储库,试图解决上述问题和其他与 Unity 相关的问题。它位于:https://github.com/eamonwoortman/RestSharp.Unity

    您的问题和其他问题已得到修复,并已针对 64 位独立 Windows 版本进行了测试。

    您能否验证这些修复程序是否也适用于您的 iOS 项目?确保构建 RestSharp.Net35.Unity 项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多