【问题标题】:Xamarin Forms how to consume a wcf serviceXamarin Forms 如何使用 wcf 服务
【发布时间】:2016-08-25 16:14:10
【问题描述】:

我创建了一个 Xamarin 项目,将以下项目添加到解决方案中:

Xamarin.UI(便携式)

Xamarin.UI.Droid

Xamarin.UI.iOS

Xamarin.UI.UWP

Xamarin.UI.Windows (Windows 8.1)

Xamarin.UI.WindowsPhone (Windows Phone 8.1)

我在创建可以使用我的 WCF 服务的客户端时遇到问题。

1) 首先,当前 Xamarin 项目模板没有引用 PCL 中的 System.ServiceModel 程序集,因此我无法右键单击 PCL 并将服务引用添加到我的项目。当我从该位置手动添加对 System.ServiceModel 的引用时 - C:\Program Files\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5 会弹出创建服务引用的菜单项。当我在 Add Service Reference 对话框中单击 Go 时,我收到以下错误:

“当前项目无法使用该服务,请检查项目目标框架是否支持该服务类型。”

PCL 目标如下:

.NET 框架 4.5

ASP.NET Core 1.0

Windows 8

Windows Phone 8.1

Xamarin.Android

Xamarin.iOS

Xamarin.iOS

我不知道如何让它工作?

2) 其次,我使用的解决方法是使用 SlSvcUtil.exe 创建客户端 将生成的代码连同对 System.ServiceModel 的引用一起添加到我的 PCL 中,一切正常。问题是当我运行代码时,它会标记类型引用错误!我是否应该手动添加对 System.ServiceModel 的引用?在这种情况下我做错了什么?我错过了一些步骤吗?

我查看了 Xamarin 文档,但似乎找不到关于此的详细说明。

请帮帮我!谢谢:)

【问题讨论】:

    标签: wcf xamarin.forms


    【解决方案1】:

    应该支持 PCL 和 WCF。或者,您可以使用 HttpClient 等手动使用它。但也许如果您可以使用共享项目而不是 PCL,那会更容易。否则,您还必须为每个平台使用 DependencyService、创建接口等。

    【讨论】:

    • 感谢 Joe,使用 httpclient 意味着我必须手动从 XML 中反序列化对象 - 啊哈。使用共享项目意味着我必须转换所有内容 - 但它可以工作。一定有办法让 WCF + PCL 工作
    • 此链接 forums.xamarin.com/discussion/19303/… 讨论了他们已使其正常工作,但未提供足够详尽的详细信息。
    • 哎呀,好像我搜索了错误的首字母缩略词。是的,某些 PCL 支持 WCF:msdn.microsoft.com/en-us/library/gg597391(v=vs.110).aspx您能否检查 PCL 配置文件编号以确保您的目标是正确的?
    • 查看链接,我是否正确地说 PCL 中的 Windows Phone 8.1 不支持 WCF?似乎就是这样,我可能不得不将项目转换为 win phone silverlight,尽管我不知道确切的差异是什么。我找不到个人资料编号,我在哪里可以找到它,我已经在问题中说明了目标是您的意思吗?
    • 太好了,我终于让它工作了。 Win Phone 8.1 WinRT 不支持 WCF,但 Win Phone 8.1 Silverlight 支持它。我所要做的就是将 PCL 的配置文件更改为 78,添加服务引用,并且 UWP、Droid、Win 8、iOS 现在都可以正常工作了。我添加了一个 win phone Silverlight 项目,因为 pcl78 支持它,这是我添加它的方式 - motzcod.es/post/122783563052/…。感谢您的所有帮助乔
    猜你喜欢
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多