【发布时间】:2013-12-27 13:32:27
【问题描述】:
在将我的解决方案从 v3 转换为 SS v4 之后 - 在 Windows 8 上的 VS 2012 中,我达到了 10 个服务的限制,否则似乎可以工作。但是在 OS X 上,在 Xamarin Studio 中使用 Mono 3.2.5 我得到了一个 stackoverflow 异常。
在堆栈跟踪中,每一行都是:
在 /private/tmp/source/bockbuild-xamarin/profiles/mono-mac-xamarin/build-root/mono-3.2.5/mcs/class/corlib/ 中的 System.Attribute.GetHashCode () [0x00000] System/Attribute.cs:261
任何想法是什么原因造成的?当我切换回我的 v3 分支时,它仍然可以正常工作。
在获得付费许可之前,我很想知道在 Mono 上接受了多少 SS v4 测试。它和 v3 一样兼容吗?我希望 Razor 改进后它会变得更好。
【问题讨论】:
-
您可以在此处的源代码中看到,属性上的属性可能会导致 StackOverflow 异常:github.com/mono/mono/blob/master/mcs/class/corlib/System/…
public override int GetHashCode () { int result = GetType ().GetHashCode (); … } -
检查 Mono 源代码表明这是一个在 3.2.5 之后已修复的错误。 (虽然只是看了一下代码,看起来修复会导致溢出异常......)
-
抱歉,Mono 上的 v4 尚未经过适当测试。在接下来的几个月里,我们会考虑在测试期间对其进行适当的测试。
-
啊伙计 - 刚刚偶然发现完全相同的问题......希望将我的 macbook 用作我的主要开发盒并放弃所有 Windows 盒子 - 这是唯一让我退缩的东西!
-
触发这个Mono bug的原因是ServiceStack的AttributeBase覆盖了
TypeId,返回了this。 @mythz,我们是否只需要等到 Mono 3.2.5 稳定下来,还是考虑在 AttributeBase 中覆盖 GetHashCode(),或者使用 GUID 作为 TypeID?
标签: mono servicestack