2011-04-21 171 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