我使用方法GetTestValue
创建了一个WCF服务。我还创建了一个测试应用程序来测试这项服务。
当我将具有连接服务的此WCF服务添加到测试应用程序时,我只能调用GetTestValueAsync
,没有GetTestValue
方法。不知何故,这个添加过程在方法名称后面添加了这个异步的东西。因此,在此测试应用程序中,当我调用GetTestValueAsync
时,WCF调用正常。我得到了结果。
然后我创建了一个Xamarin交叉应用程序应用程序,我也添加了这个WCF服务,当我从这个应用程序调用{{1}}时,我收到以下错误:
对操作“ GetTestValue ”反序列化请求消息正文时出错。 OperationFormatter遇到无效的Message正文。预计会找到名为“GetTestValue”和名称空间“http://tempuri.org/”的节点类型“Element”。找到名称为“ GetTestValueAsync ”的节点类型“元素”和名称空间“http://tempuri.org/”
在测试项目中有些奇怪,它工作正常,并且在Xamarin交叉应用程序中没有。
GetTestValueAsync
我的方法名称?如何停止将此Async
添加到方法名称?
感谢您的帮助。
答案 0 :(得分:1)
目前,Xamarin应用程序与WCF Web Service Reference连接的服务提供商生成的基于任务的异步WCF代理方法不兼容(bugzilla.xamarin.com Bug 51959)。
生成较旧,兼容的WCF代理方式的一种方法是使用SvcUtil.exe
中的/async
和/tcv:Version35
开关运行Developer Command Prompt。这将生成同步代理方法,开始/结束样式异步编程模型(APM)回调代理方法和基于事件的代理方法,所有这些方法都与Xamarin应用程序兼容。
(注意:如果省略/async
切换,SvcUtil.exe
将生成较新的,不兼容的基于任务的代理方法。)
重复:偶然的,我首先回复了这个问题的最新副本: How to use WCF services in .netstandard with Xamarin.Forms project?
答案 1 :(得分:0)
我知道这已经很老了,但是我遇到了同样的问题,搜索了一段时间。在项目中添加引用时,可以检查“生成同步操作”,并且不再生成“异步”后缀。我的VS使用德语运行,因此我只翻译了选项。如果您添加新方法,则也会考虑该设置。
来自德国的问候。