Поделиться через


Совместимость с ASP.NET

В примере ASPNetCompatibility показано, как включить режим совместимости ASP.NET в Windows Communication Foundation (WCF). Службы, работающие в режиме совместимости ASP.NET, полностью участвуют в конвейере приложений ASP.NET и могут использовать такие функции ASP.NET, как авторизация файла или URL-адреса, состояние сеанса и HttpContext класс. Класс HttpContext позволяет получить доступ к файлам cookie, сеансам и другим функциям ASP.NET. Для этого режима требуется, чтобы привязки использовали транспорт HTTP, а сами службы были размещены в службах IIS.

В этом примере клиентом является консольное приложение (как исполняемый файл), а служба размещается в службах IIS.

Примечание.

Процедура настройки и инструкции по построению для данного образца приведены в конце этого раздела.

Для выполнения этого примера требуется платформа .NET Framework 4 пула приложений. Чтобы создать новый пул приложений или изменить пул приложений по умолчанию, выполните следующие шаги.

  1. Откройте панель управления. Откройте приложение Администратор istrative Tools под заголовком Системы и безопасности. Откройте апплет диспетчера службы IIS (IIS).

  2. Разверните представление дерева в области Подключение ions. Выберите узел пулов приложений.

  3. Чтобы задать пул приложений по умолчанию для использования платформа .NET Framework 4 (что может привести к проблемам несовместимости с существующими сайтами), щелкните правой кнопкой мыши элемент списка DefaultAppPool и выберите "Базовый" Параметры.... Установите для версии .Net Framework раскрывающийся список .Net Framework версии 4.0.30128 (или более поздней версии).

  4. Чтобы создать пул приложений, использующий платформа .NET Framework 4 (для сохранения совместимости для других приложений), щелкните правой кнопкой мыши узел пулов приложений и выберите "Добавить пул приложений...". Присвойте новому пулу приложений имя и установите для версии .Net Framework значение .Net Framework версии 4.0.30128 (или более поздней версии). Выполнив приведенные ниже действия по настройке, щелкните правой кнопкой мыши приложение ServiceModelSamples и выберите пункт "Управление приложением", "Дополнительно Параметры...". Задайте пул приложений новому пулу приложений.

Этот пример основан на начале работы, который реализует службу калькулятора. Контракт ICalculator был изменен в соответствии с контрактом ICalculatorSession, чтобы можно было выполнять набор операций с сохранением промежуточного результата.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculatorSession
{
    [OperationContract]
    void Clear();
    [OperationContract]
    void AddTo(double n);
    [OperationContract]
    void SubtractFrom(double n);
    [OperationContract]
    void MultiplyBy(double n);
    [OperationContract]
    void DivideBy(double n);
    [OperationContract]
    double Result();
}

Благодаря использованию возможности служба поддерживает состояние клиента во время вызова нескольких операций для вычислений. Клиент может извлечь текущий результат путем вызова метода Result и очистить результат (сделать его равным нулю) путем вызова метода Clear.

Служба использует сеанс ASP.NET для хранения результата для каждого клиентского сеанса. Это позволяет службе поддерживать промежуточный результат для каждого клиента по мере множественных вызовов службы.

Примечание.

ASP.NET состояния сеанса и сеансы WCF очень разные. Дополнительные сведения о сеансах WCF см. в разделе "Сеансы ".

Служба имеет интимную зависимость от состояния сеанса ASP.NET и требует правильной работы режима совместимости ASP.NET. Такие требования выражаются декларативно путем применения атрибута AspNetCompatibilityRequirements.

[AspNetCompatibilityRequirements(RequirementsMode =
                       AspNetCompatibilityRequirementsMode.Required)]
public class CalculatorService : ICalculatorSession
{
    double Result
    {  // store result in AspNet Session
       get {
          if (HttpContext.Current.Session["Result"] != null)
             return (double)HttpContext.Current.Session["Result"];
          return 0.0D;
       }
       set
       {
          HttpContext.Current.Session["Result"] = value;
       }
    }
    public void Clear()
    {
        Result = 0.0D;
    }
    public void AddTo(double n)
    {
        Result += n;
    }
    public void SubtractFrom(double n)
    {
        Result -= n;
    }
    public void MultiplyBy(double n)
    {
        Result *= n;
    }
    public void DivideBy(double n)
    {
        Result /= n;
    }
    public double Result()
    {
        return Result;
    }
}

При выполнении примера запросы и ответы операций отображаются в окне консоли клиента. Чтобы закрыть клиент, нажмите клавишу ВВОД в окне клиента.

0, + 100, - 50, * 17.65, / 2 = 441.25
Press <ENTER> to terminate client.

Настройка, сборка и выполнение образца

  1. Убедитесь, что вы выполнили процедуру однократной установки для примеров Windows Communication Foundation.

  2. Чтобы создать выпуск решения на языке C# или Visual Basic .NET, следуйте инструкциям в разделе Building the Windows Communication Foundation Samples.

  3. После создания решения запустите Setup.bat, чтобы настроить приложение ServiceModelSamples в IIS 7.0. Каталог ServiceModelSamples теперь должен отображаться как приложение IIS 7.0.

  4. Чтобы запустить пример в конфигурации с одним компьютером или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".

См. также