Практическое руководство. Добавление конечной точки ASP.NET AJAX без использования конфигурации

Windows Communication Foundation (WCF) позволяет создать службу, которая предоставляет конечную точку с поддержкой AJAX ASP.NET, которую можно вызывать из JavaScript на веб-сайте клиента. Для создания этой конечной точки можно воспользоваться либо файлом конфигурации (как и для всех остальных конечных точек WCF), либо методом, не требующим никаких элементов конфигурации. В этом разделе показано решение этой задачи вторым методом.

Создание служб с конечными точками ASP.NET AJAX без конфигурации возможно только при размещении служб в службах IIS. Чтобы активировать конечную точку AJAX ASP.NET с помощью этого подхода, укажите WebScriptServiceHostFactory параметр фабрики в директиве @ServiceHost в SVC-файле. Эта пользовательская фабрика является компонентом, который автоматически настраивает конечную точку ASP.NET AJAX так, чтобы ее можно было вызвать из кода JavaScript на веб-сайте клиента.

Рабочий пример см. в разделе "Служба AJAX без конфигурации".

Описание настройки конечной точки AJAX ASP.NET с помощью элементов конфигурации см. в разделе "Практическое руководство. Использование конфигурации для добавления ASP.NET конечной точки AJAX".

Создание базовой службы WCF

  1. Определите базовый контракт службы WCF с интерфейсом, помеченным атрибутом ServiceContractAttribute . Пометьте каждую операцию атрибутом OperationContractAttribute. Не забудьте задать свойство Namespace.

    [ServiceContract(Namespace = "MyService")]]  
    public interface ICalculator  
    {  
        [OperationContract]  
        // This operation returns the sum of d1 and d2.  
        double Add(double n1, double n2);  
    
        //Other operations omitted…  
    
    }  
    
  2. Реализуйте контракт службы ICalculator с помощью класса CalculatorService.

    public class CalculatorService : ICalculator  
    {  
        public double Add(double n1, double n2)  
        {  
            return n1 + n2;  
        }  
    
    //Other operations omitted…  
    
  3. Определите пространство имен для реализаций ICalculator и CalculatorService, заключив их в блок пространства имен.

    Namespace Microsoft.Ajax.Samples  
    {  
        //Include the code for ICalculator and Calculator here.  
    }  
    

Размещение службы в службах IIS без конфигурации

  1. Создайте в приложении новый файл с именем "service" и расширением .svc. Измените этот файл, добавив соответствующие сведения о директиве @ServiceHost для службы. Укажите, что WebScriptServiceHostFactory необходимо использовать в директиве @ServiceHost для автоматической настройки конечной точки ASP.NET AJAX.

    <%@ServiceHost
        language=c#
        Debug="true"
        Service="Microsoft.Ajax.Samples.CalculatorService"  
        Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory  
    %>  
    
  2. Создайте службу и вызовите ее из клиента. Internet Information Services (IIS) активирует данную службу при вызове. Дополнительные сведения о размещении в IIS см. в статье "Практическое руководство. Размещение службы WCF в СЛУЖБАх IIS".

Вызов службы

  1. Конечная точка настроена по пустому адресу относительно SVC-файла, поэтому служба теперь доступна и может вызываться путем отправки запросов в service.svc/operation>, например service.svc/<Add для Add операции. Для этого нужно указать URL-адрес службы в коллекции "Скрипты" в средстве управления диспетчера скриптов ASP.NET AJAX. Пример см. в разделе "Служба AJAX без настройки".

Пример

Автоматически настраиваемая конечная точка создается по пустому адресу, заданному относительно базового URL-адреса. Этот метод также допускает добавление и использование файла конфигурации. Если в файле конфигурации содержатся определения конечных точек, эти конечные точки добавляются к автоматически настраиваемой конечной точке.

Например, service.svc использует фабрику узла WebScriptServiceHostFactory, а в каталоге службы содержится файл Web.config, который определяет конечную точку для той же службы с помощью привязки BasicHttpBinding по относительному адресу "soap". В этом случае служба содержит две конечные точки: одну - в файле service.svc (отвечающую на запросы ASP.NET AJAX), другую - в service.svc/soap (отвечающую на запросы SOAP).

Если файл конфигурации определяет конечную точку по пустому относительному адресу и используется фабрика узла WebScriptServiceHostFactory, создается исключение, происходит сбой запуска службы.

С помощью конфигурации невозможно изменить параметры автоматически настраиваемой конечной точки. При необходимости изменить какой-либо параметр (например, квоту средств чтения) не следует использовать метод без конфигурации, т. е. удалять фабрику узла WebScriptServiceHostFactory из файла .svc и создавать запись конфигурации для конечной точки.

Если службе требуется режим совместимости с ASP.NET (например, если служба использует класс HttpContext или механизмы авторизации ASP.NET), для включения этого режима все равно понадобится файл конфигурации. Обязательный <элемент конфигурации — это элемент serviceHostingEnvironment> , который необходимо добавить следующим образом.

<system.serviceModel>

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> </system.serviceModel>

Дополнительные сведения см. в разделе служб WCF и ASP.NET .

Класс WebScriptServiceHostFactory наследуется от класса ServiceHostFactory. Подробное описание механизма фабрики узлов службы см. в разделе "Расширение размещения с помощью ServiceHostFactory ".

См. также