为什么在WCF异步方法中有响应返回类型?

时间:2013-11-22 12:26:09

标签: c# asp.net .net wcf web-services

我在WCF中并不是那么完美,仍然是学习者。我学习WCF服务的地方告诉我,WCF服务异步方法也返回与原始方法相同的数据类型。它在我下载的项目上工作正常但是使用相同的配置我创建了一个新项目并且它没有返回原始方法的数据类型。而是响应类型:

enter image description here

您可以看到它显示isEmailExistsResponse类型。 如何让它返回bool类型?

我的配置

客户端:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IService1"/>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost/Service1.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1" contract="WCORE.IService1" name="BasicHttpBinding_IService1"/>
    </client>
  </system.serviceModel>

服务器端:

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https"/>
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>

我在客户端和服务上都使用.NET 4.5。但是我的服务器安装了4.0。如果服务在最终部署时遇到问题,我可以切换到4.0。

WCF客户端设置: enter image description here

2 个答案:

答案 0 :(得分:1)

您需要await异步方法:

var isEmailExists = await client.isEmailsExistsAsync(email);
if (isEmailExists == false) {
...
}

答案 1 :(得分:0)

只要您看到Task<SomeOtherType>的返回类型,就必须使用新的await关键字来处理它的属性。

http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx