В моем приложении winforms C # есть веб-служба SOAP, но я пытаюсь получить WSDL.exe для генерации с помощью основанных на задачах асинхронных / ожидающих методов.
Я прочитал одокументацию здесь и попытался добавить следующий XML-файл в переключатель par
, но он все еще не дает мне ожидаемых методов на основе задач для асинхронного вызова методов веб-службы.
// 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 .....
}