我正在尝试将RestSharp附加到Unity3d。 原始的RestSharp mono lib在编辑器中工作正常,但在设备上它与callstack崩溃
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的下一步出现在哪里。有什么想法吗?
答案 0 :(得分:3)
使用Unity 5.2.1构建独立Windows项目时遇到了同样的问题。在编辑器中,一切正常,直到你创建一个构建。
我认为这个问题与'AddHandler'方法中使用的'structuredSyntaxSuffixWildcardRegex'有关。虽然我不确切知道它失败的原因,但我确实知道RestSharp的早期版本对我们有用。
我猜你也在使用最新的RestSharp版本,所以你能试试RestSharp v105.1.0吗?
它似乎停止了Restshap v105.2.1的运行,我正在通过提交以查看可能的罪魁祸首。如果我找到解决方案,我会分叉并修复它。
另外,我必须告诉您,在我们的情况下,由于缺少Mono.Posix库,GZIP解压缩也无法正常工作。当服务器返回一个gzip压缩响应并且RestClient允许它时,会发生此问题。我们必须使用'Fabman08的修复程序来解决这个问题,该修复程序使decompression configurable。
答案 1 :(得分:1)
我已经分叉了RestSharp存储库,试图修复上述和其他Unity相关的问题。它位于:https://github.com/eamonwoortman/RestSharp.Unity。
您和其他问题已经修复,并针对64位独立Windows版本进行了测试。
您能否验证这些修补程序是否也适用于您的iOS项目?确保构建RestSharp.Net35.Unity项目。