【问题标题】:WCF for windows phone 8.1 silverlightWindows Phone 8.1 Silverlight 的 WCF
【发布时间】:2014-06-22 10:21:09
【问题描述】:

我在使用 wcf 和 wp8.1 silverlight 时遇到问题。我很遗憾地收到错误合同“IPhoneService”包含同步操作,Silverlight 不支持这些操作。将操作拆分为“开始”和“结束”部分,并将 OperationContractAttribute 上的 AsyncPattern 属性设置为“true”。请注意,您不必在服务器上进行相同的更改。将同步方法更改为异步后,我仍然遇到相同的错误(我更新了服务参考。)。出于好奇,我尝试在控制台应用程序上使用它,并且效果很好。 以前我确实遇到了另一个可能与它有关的错误。添加服务引用会生成一个 app.config 文件,但该应用需要一个 ServiceReferences.ClientConfig,所以我只是将其重命名。

现在我将 WCF 方法改回同步:

public int GetData()
        {
            return 12;
        }

在我的 MainViewModel 上(我正在使用 MVVMLight 工具包):

 public void Load()
        {
            var client = new ServiceReference1.PhoneServiceClient();
            client.GetDataCompleted += client_GetDataCompleted;
            client.GetDataAsync();
        }

        void client_GetDataCompleted(object sender, ServiceReference1.GetDataCompletedEventArgs e)
        {
            Title = e.Result.ToString();
        }

我在这样的异步方法之前实现了,还是得到了同样的错误:

 public IAsyncResult BeginGetData(AsyncCallback callback, object asyncState)
        {
            var msg = 12;
            return new CompletedAsyncResult<int>(msg);
        }

        public int EndGetData(IAsyncResult r)
        {
            CompletedAsyncResult<int> result = r as CompletedAsyncResult<int>;            
            return result.Data;
        }

        class CompletedAsyncResult<T> : IAsyncResult
        {
            T data;

            public CompletedAsyncResult(T data)
            { this.data = data; }

            public T Data
            { get { return data; } }

            #region IAsyncResult Members
            public object AsyncState
            { get { return (object)data; } }

            public WaitHandle AsyncWaitHandle
            { get { throw new Exception("The method or operation is not implemented."); } }

            public bool CompletedSynchronously
            { get { return true; } }

            public bool IsCompleted
            { get { return true; } }
            #endregion
        }

【问题讨论】:

    标签: c# wcf silverlight windows-phone-8.1


    【解决方案1】:

    问题是VS2013 RC2版本。未正确生成参考。更新解决了问题

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      • 2014-06-03
      • 2014-09-07
      相关资源
      最近更新 更多