Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В примере WebContentTypeMapper показано, как сопоставить новые типы контента с форматами текста сообщения Windows Communication Foundation (WCF).
Элемент WebHttpEndpoint подключается к кодировщику веб-сообщений, что позволяет WCF получать JSON, XML или необработанные двоичные сообщения в той же конечной точке. Кодировщик определяет формат текста сообщения, просматривая тип контента HTTP запроса. В этом примере представлен WebContentTypeMapper класс, позволяющий пользователю управлять сопоставлением между типом контента и форматом текста.
WCF предоставляет набор сопоставлений по умолчанию для типов контента. Например, application/json сопоставляется с JSON и text/xml сопоставляется с XML. Любой тип контента, не сопоставленный с JSON или XML, сопоставляется с необработанным двоичным форматом.
В некоторых сценариях (например, API push-стилей) разработчик службы не управляет типом контента, возвращаемым клиентом. Например, клиенты могут возвращать JSON как text/javascript, а не application/json. В этом случае разработчик службы должен предоставить тип, производный от WebContentTypeMapper для правильной обработки заданного типа контента, как показано в следующем примере кода.
public class JsonContentTypeMapper : WebContentTypeMapper
{
public override WebContentFormat
GetMessageFormatForContentType(string contentType)
{
if (contentType == "text/javascript")
{
return WebContentFormat.Json;
}
else
{
return WebContentFormat.Default;
}
}
}
Тип должен переопределить GetMessageFormatForContentType(String) метод. Метод должен оценивать contentType аргумент и возвращать одно из следующих значений: Json, , XmlRawили Default. Возврат Default отдает предпочтение сопоставлениям кодировщика веб-сообщений по умолчанию. В предыдущем примере кода text/javascript тип контента сопоставляется с JSON, а все остальные сопоставления остаются неизменными.
Чтобы использовать JsonContentTypeMapper класс, используйте следующий код в Web.config:
<system.serviceModel>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" contentTypeMapper="Microsoft.Samples.WebContentTypeMapper.JsonContentTypeMapper, JsonContentTypeMapper, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
Чтобы проверить требование использования JsonContentTypeMapper, удалите атрибут contentTypeMapper из приведенного выше файла конфигурации. Страница клиента не загружается при попытке использовать text/javascript для отправки содержимого JSON.
Настройка, сборка и запуск примера
Убедитесь, что вы выполнили процедуру настройки One-Time для образцов Windows Communication Foundation.
Создайте решение WebContentTypeMapperSample.sln, как описано в разделе "Создание примеров Windows Communication Foundation".
Перейдите к
http://localhost/ServiceModelSamples/JCTMClientPage.htm(не открывайте JCTMClientPage.htm в браузере из каталога проекта).