Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O exemplo WebContentTypeMapper demonstra como mapear novos tipos de conteúdo para formatos de corpo de mensagem do WCF (Windows Communication Foundation).
O WebHttpEndpoint elemento conecta o codificador de mensagens da Web, que permite que o WCF receba mensagens binárias JSON, XML ou brutas no mesmo ponto de extremidade. O codificador determina o formato do corpo da mensagem examinando o tipo de conteúdo HTTP da solicitação. Este exemplo apresenta a WebContentTypeMapper classe, que permite ao usuário controlar o mapeamento entre o tipo de conteúdo e o formato do corpo.
O WCF fornece um conjunto de mapeamentos padrão para tipos de conteúdo. Por exemplo, application/json mapeia para JSON e text/xml mapeia para XML. Qualquer tipo de conteúdo que não seja mapeado para JSON ou XML é mapeado para o formato binário bruto.
Em alguns cenários (por exemplo, APIs de estilo push), o desenvolvedor de serviços não controla o tipo de conteúdo retornado pelo cliente. Por exemplo, os clientes podem retornar JSON como text/javascript em vez de application/json. Nesse caso, o desenvolvedor do serviço deve fornecer um tipo que deriva de WebContentTypeMapper para manipular corretamente o tipo de conteúdo fornecido, conforme mostrado no código de exemplo a seguir.
public class JsonContentTypeMapper : WebContentTypeMapper
{
public override WebContentFormat
GetMessageFormatForContentType(string contentType)
{
if (contentType == "text/javascript")
{
return WebContentFormat.Json;
}
else
{
return WebContentFormat.Default;
}
}
}
O tipo precisa substituir o método GetMessageFormatForContentType(String). O método deve avaliar o contentType argumento e retornar um dos seguintes valores: Json, , Xml, Rawou Default. Retornar Default transfere para a Web padrão os mapeamentos do codificador de mensagens. No código de exemplo anterior, o text/javascript tipo de conteúdo é mapeado para JSON e todos os outros mapeamentos permanecem inalterados.
Para usar a JsonContentTypeMapper classe, use o seguinte em seu 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>
Para verificar o requisito de uso do JsonContentTypeMapper, remova o atributo contentTypeMapper do arquivo de configuração acima. A página do cliente falha ao carregar ao tentar usar text/javascript para enviar conteúdo JSON.
Para configurar, compilar e executar o exemplo
Verifique se você executou o Procedimento de instalação avulsa dos exemplos do Windows Communication Foundation.
Compile a solução WebContentTypeMapperSample.sln conforme descrito em Building the Windows Communication Foundation Samples.
Navegue até
http://localhost/ServiceModelSamples/JCTMClientPage.htm(não abra JCTMClientPage.htm no navegador de dentro do diretório do projeto).