代码之家  ›  专栏  ›  技术社区  ›  Brendan Gooden

Visual Studio WSDL创建异步/等待SOAP Web服务

  •  0
  • Brendan Gooden  · 技术社区  · 7 年前

    我的C#winforms应用程序中有一个SOAP webservice,但我正在尝试使用基于任务的async/await方法生成WSDL.exe。

    我已经看过文件了 here 并尝试将以下XML文件添加到 par 但是它仍然没有为我提供基于任务的异步调用webservice方法的方法。

    // BEGIN WSDLPARAMETERS.XML
    
    <wsdlParameters  xmlns="http://microsoft.com/webReference/">
      <webReferenceOptions>
        <verbose>false</verbose>
        <codeGenerationOptions>properties newAsync enableDataBinding</codeGenerationOptions>
      </webReferenceOptions>
    </wsdlParameters>
    
    // END WSDLPARAMETERS.XML
    
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>wsdl.exe  "http://********/interchangeservices.asmx" /out:"****\WebServices.cs" /l:CS  /n:"AdelaideInterchangeAutomation" /par:"*****\wsdlparameters.xml"
    

    返回如下方法

        /// <remarks/>
    
        public AwaitingUpload CheckHistoryNotUploaded() {
            object[] results = this.Invoke("CheckHistoryNotUploaded", new object[0]);
            return ((AwaitingUpload)(results[0]));
        }
    
        /// <remarks/>
        public void CheckHistoryNotUploadedAsync() {
            this.CheckHistoryNotUploadedAsync(null);
        }
    
        /// <remarks/>
        public void CheckHistoryNotUploadedAsync(object userState) {
            if ((this.CheckHistoryNotUploadedOperationCompleted == null)) {
                this.CheckHistoryNotUploadedOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckHistoryNotUploadedOperationCompleted);
            }
            this.InvokeAsync("CheckHistoryNotUploaded", new object[0], this.CheckHistoryNotUploadedOperationCompleted, userState);
        }
    
        private void OnCheckHistoryNotUploadedOperationCompleted(object arg) {
            if ((this.CheckHistoryNotUploadedCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.CheckHistoryNotUploadedCompleted(this, new CheckHistoryNotUploadedCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
    

    await 关键字。

        public AwaitingUpload CheckHistoryNotUploaded() {
            object[] results = this.Invoke("CheckHistoryNotUploaded", new object[0]);
            return ((AwaitingUpload)(results[0]));
        }
    
        /// <remarks/>
        public async Task<AwaitingUpload> CheckHistoryNotUploadedAsync() {
            await .....
        }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Brendan Gooden    7 年前

    Add Connected Service 在Visual Studio中。

    在 Advanced 菜单中有一个生成基于任务的异步方法的选项。

    enter image description here