- •Практическое руководство по программной реализации wcf-служб
- •Как определить контракт службы WindowsCommunicationFoundation
- •Как реализовать контракт службы WindowsCommunicationFoundation
- •Реализация контракта службы wcf
- •Как размещать и запускать базовую службу WindowsCommunicationFoundation
- •Создание консольного приложения для размещения службы.
- •Как создать клиент Windows Communication Foundation
- •Создание клиента Windows Communication Foundation
- •Как настроить базовый клиент Windows Communication Foundation
- •Настройка клиента Windows Communication Foundation
- •Как использовать клиент Windows Communication Foundation
- •Использование клиента Windows Communication Foundation
- •Настройка служб с использованием файлов конфигурации
- •Основные разделы файла конфигурации
- •Практическое руководство. Конфигурации привязок и поведения
- •Слияние поведений
- •Как разместить службу wcf в iis
- •Создание службы, размещенной в iis
- •Служебное средство ServiceModel Metadata Utility Tool (Svcutil.Exe)
- •Функциональные возможности
- •Время ожидания
- •Настройка для различных версий
- •Доступ к документам wsdl
- •Использование программы SvcUtil.Exe
- •Типичные способы использования
- •Создание кода
- •Экспорт метаданных
- •Проверка службы
- •Загрузка метаданных
- •Создание типа XmlSerializer
- •Примеры
- •Максимальная квота на количество символов в таблице имен.
- •Вопросы безопасности
Примеры
Следующая команда используется для создания кода клиента из работающей службы или документов метаданных в сети.
svcutil
http://service/metadataEndpoint
Следующая команда используется для создания кода клиента из локальных документов метаданных.
svcutil
*.wsdl *.xsd /language:C#
Следующая команда используется для создания типов контрактов данных в Visual Basic из локальных документов схемы.
svcutil
/dconly *.xsd /language:VB
Следующая команда используется для загрузки документов метаданных из работающих служб.
svcutil
/t:metadata http://service/metadataEndpoint
Следующая команда используется для создания документов метаданных для контрактов служб и связанных типов в сборке.
svcutil
myAssembly.dll
Следующая команда используется для создания документов метаданных для службы и всех связанных контрактов службы и типов данных в сборке.
svcutil
myServiceHost.exe /serviceName:myServiceName
Следующая команда используется для создания документов метаданных для типов данных в сборке.
svcutil
myServiceHost.exe /dconly
С помощью следующей команды проверяется размещение службы.
svcutil
/validate /serviceName:myServiceName myServiceHost.exe
Следующая команда создает типы сериализации для типов XmlSerializer, используемых любыми контрактами служб в сборке.
svcutil
/t:xmlserializer myContractLibrary.exe
Максимальная квота на количество символов в таблице имен.
Когда программа svcutil используется для создания метаданных для службы, может выводиться следующее сообщение:
«Ошибка: не удается получить метаданные из http://localhost:8000/somesservice/mex». Превышена квота максимального числа символа в таблице имен (16384) при чтении данных XML. Таблица имен является структурой данных, в которой хранятся строки, обнаруженные при обработке данных XML. Триггером этой квоты могут служить длинные XML-документы с неповторяющимися именами элементов, именами атрибутов и значениями атрибутов. Эту квоту можно увеличить, изменив свойство MaxNameTableCharCount объекта XmlDictionaryReaderQuotas, используемого при создании средства чтения XML.
Эта ошибка может вызываться службой, которая возвращает крупный WSDL-файл на запрос метаданных службы. Проблема состоит в превышении квоты символов для программы svcutil.exe. Это значение задается, чтобы предотвратить атаки типа «отказ в обслуживании». Можно увеличить квоту, указав следующий файл конфигурации для svcutil.
В следующем файле конфигурации показано, как задать квоты модуля чтения для svcutil.
Копировать
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="MyBinding">
<textMessageEncoding>
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</textMessageEncoding>
<httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint binding="customBinding" bindingConfiguration="MyBinding"
contract="IMetadataExchange"
name="http" />
</client>
</system.serviceModel>
</configuration>
Создайте новый файл с именем svcutil.exe.config и скопируйте в него пример XML-кода.Затем поместите файл в один каталог с файлом svcutil.exe.При следующем запуске программа svcutil.exe будет использовать новые параметры.