UWP添加服务引用后无法调用SOAP WebService方法,求解决方案
在UWP中调用SOAP WebService的解决方案
我懂你现在的困境——Android端用DependencyService调用SOAP服务顺顺当当,到UWP这边就卡壳找不到方法了对吧?这大概率是UWP平台的WCF客户端特性导致的,我来一步步帮你解决:
1. 先理清UWP WCF客户端的核心特性
UWP的服务引用默认只会生成异步方法(命名后缀一般是Async),而你共享接口里定义的是同步方法getWIValues,这就是你找不到对应方法的核心原因——服务生成的客户端根本没有同步版本的调用方法。
首先建议把共享接口改成异步模式,这更符合UWP的异步编程规范:
// 放在PCL/NetStandard项目的共享接口 public interface IGetWI { Task<string[]> GetWIValuesAsync(string item); }
2. 修正UWP端的DependencyService实现
接下来调整UWP的实现类,调用服务引用生成的异步方法,同时做好客户端的初始化和异常处理:
using System; using System.ServiceModel; using System.Threading.Tasks; using Xamarin.Forms; [assembly: Dependency(typeof(XXXXX.UWP.DependencyService.GetWI))] namespace XXXXX.UWP.DependencyService { public class GetWI : Interface.IGetWI { public async Task<string[]> GetWIValuesAsync(string item) { // 使用using确保客户端资源被正确释放 using (var client = new GET_WI.WISWRProviderClient()) { try { // 调用服务生成的异步方法(注意方法名的Async后缀) var serviceResult = await client.GetWIValuesAsync(item); // 根据服务实际返回结构转换成string[],这里要匹配你的服务返回类型 return serviceResult?.ToArray() ?? Array.Empty<string>(); } catch (FaultException ex) { // 处理服务端抛出的SOAP异常 throw new Exception("服务调用出错: " + ex.Message); } catch (CommunicationException ex) { // 处理通信类异常(比如网络不通、端点地址错误) throw new Exception("通信失败: " + ex.Message); } } } } }
3. 检查服务引用的配置细节
如果还是无法调用,先检查服务引用的配置:
- 右键UWP项目里的
GET_WI服务引用 →Configure Service Reference - 确认服务地址是正确的WSDL地址
- 检查
Collection type是否设置为System.Array(和你返回的string[]类型匹配) - 确保
Generate asynchronous operations选项是勾选状态(默认是勾选的,可再次确认)
4. 特殊情况:必须保留同步接口的处理
如果因为项目限制必须保留同步接口(不推荐,UWP不鼓励同步阻塞操作),可以用异步转同步的方式,但要注意死锁风险:
public string[] getWIValues(string item) { using (var client = new GET_WI.WISWRProviderClient()) { try { var task = client.GetWIValuesAsync(item); task.Wait(); return task.Result?.ToArray() ?? Array.Empty<string>(); } catch (Exception ex) { // 捕获并抛出内层异常,方便排查问题 throw ex.InnerException ?? ex; } } }
最后必做的权限检查
别忘给UWP项目开网络权限:打开Package.appxmanifest → Capabilities,勾选Internet (Client)(公网服务)或者Private Networks (Client & Server)(内网服务)。
内容的提问来源于stack exchange,提问作者cocoadrinker
相关产品推荐
相关产品推荐

