Практическое руководство. Добавление конечной точки 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
Определите базовый контракт службы 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… }
Реализуйте контракт службы
ICalculator
с помощью классаCalculatorService
.public class CalculatorService : ICalculator { public double Add(double n1, double n2) { return n1 + n2; } //Other operations omitted…
Определите пространство имен для реализаций
ICalculator
иCalculatorService
, заключив их в блок пространства имен.Namespace Microsoft.Ajax.Samples { //Include the code for ICalculator and Calculator here. }
Размещение службы в службах IIS без конфигурации
Создайте в приложении новый файл с именем "service" и расширением .svc. Измените этот файл, добавив соответствующие сведения о директиве @ServiceHost для службы. Укажите, что WebScriptServiceHostFactory необходимо использовать в директиве @ServiceHost для автоматической настройки конечной точки ASP.NET AJAX.
<%@ServiceHost language=c# Debug="true" Service="Microsoft.Ajax.Samples.CalculatorService" Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory %>
Создайте службу и вызовите ее из клиента. Internet Information Services (IIS) активирует данную службу при вызове. Дополнительные сведения о размещении в IIS см. в статье "Практическое руководство. Размещение службы WCF в СЛУЖБАх IIS".
Вызов службы
- Конечная точка настроена по пустому адресу относительно 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 ".