WCF Server - асинхронный метод - PullRequest
0 голосов
/ 21 апреля 2011

Я новичок в WCF. У меня есть сервис WCF с методом

public string DoSomething(int i);

Я вызываю этот метод с одного клиента, и следующий клиент не может получить результаты этого метода, пока первый клиент не завершит метод. Как сделать это вызовы асинхронными?

Мой сервис 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>

1 Ответ

0 голосов
/ 21 апреля 2011

Если вы хотите совершать асинхронные звонки на ваш сервис:

В Visual Studio Solution Explorer перейдите к своей справочной службе в проекте, который содержит ваше клиентское приложение. Щелкните правой кнопкой мыши ссылку на службу и выберите «Настроить ссылку на службу», затем установите флажок «Создать асинхронные операции» и нажмите кнопку «ОК».

Хотя в этом нет необходимости, поскольку вы можете настроить свой сервис для обработки нескольких запросов. Возможно, вы захотите посмотреть, как вы настроили InstanceContextMode и ConcurrencyMode. BasicHttpBinding не поддерживает сеансы, поэтому ваш сервис по умолчанию использует InstanceContextMode.PerCall. Для получения более подробной информации см. Сеансы, экземпляры и параллелизм

Может быть, у вас есть что-то ограничивающее количество звонков. Подробнее см. ServiceThrottlingBehavior

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...