2011-04-21 174 views
0

WCF中的新功能。 我有方法WCF服务器 - 异步方法

public string DoSomething(int i); 

我打电话从一个客户端和一个客户端这种方法不能老是从这个方法得到的结果,直到第一个客户端完成方法WCF服务。 如何使这个调用异步?

我的WCF服务:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode = ConcurrencyMode.Multiple)] 
public class MyService : IMyService 

我的配置:

<system.serviceModel> 
     <services> 
      <service name="MyService" behaviorConfiguration="ServiceBehavior"> 
       <endpoint contract="IMyService" binding="basicHttpBinding"/> 
       <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex"/> 
      </service> 
     </services> 
     <behaviors> 
      <serviceBehaviors> 
       <behavior name="ServiceBehavior"> 
        <serviceMetadata httpGetEnabled="true"/> 
        <!--true--> 
        <serviceDebug includeExceptionDetailInFaults="true"/> 
       </behavior> 
      </serviceBehaviors> 
     </behaviors> 
     <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/> 
    </system.serviceModel> 
+0

你如何主办服务和你的服务有什么行为?您完全不提供描述您服务的信息。 – 2011-04-21 07:21:40

+0

我的wcf服务: – Marcin 2011-04-21 08:14:09

+0

我在调试模式下从VS运行此服务 - 也许这是一个客户端阻塞另一个客户端的原因,并且在正常情况下它想要出现? – Marcin 2011-04-21 08:38:03

回答

0

如果你想使你的服务的异步调用:

在Visual Studio解决方案资源管理器浏览到您的服务引用在包含您的客户端应用程序的项目中。右键单击您的服务参考并选择“配置服务参考”,然后选中“生成异步操作”框,然后单击确定。

它不应该是必要的,但因为您可以配置您的服务来处理多个请求。你可能想看看你如何配置InstanceContextMode和ConcurrencyMode。 basicHttpBinding不支持会话,所以你的服务可能默认为InstanceContextMode.PerCall。欲了解更多详情,请参阅Sessions, Instancing, and Concurrency

也许你有某种限制呼叫的次数。欲了解更多详情,请参阅ServiceThrottlingBehavior