2012-05-07 39 views
1

我使用类似于http://docs.xamarin.com/ios/tutorials/Working_with_Web_Services#Consuming_WCF_Services的Silverlight SLSvcUtil.exe工具在Monotouch上创建了一个WCF客户端。iPhone硬件上的Monotouch/WCF错误

在模拟器一切工作正常,但是当我开始它在iPhone 4S我得到了错误:

试图JIT编译方法“(包装的委托,开始-调用):begin_invoke_IAsyncResult_ __TimeSpan_AsyncCallback_object(系统.TimeSpan,System.AsyncCallback,object)',而使用--aot-only运行。

任何想法?

+0

谢谢!我刚刚解决了从Visual Studio项目复制服务引用并覆盖服务和服务通道的问题,例如:http://stackoverflow.com/questions/10054581/monotouch-wcf-how-to-consume-the-wcf - 服务 - 无 - SvcUtil工具 –

回答

1

我已经从Monotouch调用了几个wcf服务,但没有遇到像这样的任何问题 - 因此可以完成。

monitouch中的jit错误通常表明链接器已经删除了某些东西,或者某些虚拟抽象方法已被调用(至少在我最近的经验中)。

你可以检查你真正的iPhone项目的链接器设置?如果你将它设置为-nolink,问题就会消失 - 请参阅http://docs.xamarin.com/ios/advanced_topics/linker

如果这样做有帮助,那么下一步是在wcf生成的文件中查看 - 你能找到并发布一些关于回调的代码方法在这种情况下?

0

这样的问题很少与链接器相关,如果签名是封装,则更少。但是,您可以使用Stuart的说明轻松确认。

IMO您可能会遇到AOT编译器无法预测所需代码的情况。混合泛型和值类型时可能会发生这种情况(并且您在生成的签名中有一个TimeSpan)。这将在模拟器(使用JIT的地方)上工作,但在AOT应用程序时不起作用。

解决此类问题的最佳方法是在http://bugzilla.xamarin.com处打开一个错误报告,并附上一个测试用例,以便我们复制该问题。