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 ASPNetCompatibility demonstra como habilitar ASP.NET modo de compatibilidade no WCF (Windows Communication Foundation). Os serviços em execução no modo de compatibilidade ASP.NET participam totalmente do pipeline de aplicativos ASP.NET e podem usar os recursos do ASP.NET, como autorização de arquivo/URL, estado de sessão e a classe HttpContext. A HttpContext classe permite acesso a cookies, sessões e outros recursos de ASP.NET. Esse modo exige que as associações usem o transporte HTTP e o próprio serviço deve ser hospedado no IIS.
Neste exemplo, o cliente é um aplicativo de console (um executável) e o serviço é hospedado no IIS (Serviços de Informações da Internet).
Observação
O procedimento de configuração e as instruções de build para este exemplo estão localizados no final deste tópico.
Este exemplo requer um pool de aplicativos do .NET Framework 4 para ser executado. Para criar um novo pool de aplicativos ou modificar o pool de aplicativos padrão, siga estas etapas.
Abra o Painel de Controle. Abra o applet ferramentas administrativas no título Sistema e Segurança . Abra o applet do Gerenciador de Serviços de Informações da Internet (IIS ).
Expanda a visão da árvore no painel Conexões . Selecione o nó Pools de Aplicativos.
Para definir o pool de aplicativos padrão para usar o .NET Framework 4 (o que pode causar problemas de incompatibilidade com sites existentes), clique com o botão direito do mouse no item de lista DefaultAppPool e selecione Configurações Básicas.... Defina o pull-down da versão do .Net Framework como .Net Framework v4.0.30128 (ou posterior).
Para criar um novo pool de aplicativos que usa o .NET Framework 4 (para preservar a compatibilidade para outros aplicativos), clique com o botão direito do mouse no nó pools de aplicativos e selecione Adicionar Pool de Aplicativos.... Nomeie o novo pool de aplicativos e defina o pull-down da versão do .Net Framework como .Net Framework v4.0.30128 (ou posterior). Depois de executar as etapas de instalação abaixo, clique com o botão direito do mouse no aplicativo ServiceModelSamples e selecione Gerenciar Aplicativo, Configurações Avançadas.... Defina o Pool de Aplicativos como o novo pool de aplicativos.
Este exemplo é baseado em Introdução, que implementa um serviço de calculadora. O ICalculator contrato foi modificado como o ICalculatorSession contrato para permitir que um conjunto de operações seja realizado, mantendo um resultado contínuo.
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculatorSession
{
[OperationContract]
void Clear();
[OperationContract]
void AddTo(double n);
[OperationContract]
void SubtractFrom(double n);
[OperationContract]
void MultiplyBy(double n);
[OperationContract]
void DivideBy(double n);
[OperationContract]
double Result();
}
O serviço mantém o estado usando o recurso para cada cliente, pois várias operações de serviço são chamadas para executar um cálculo. O cliente pode recuperar o resultado atual chamando Result e pode limpar o resultado para zero chamando Clear.
O serviço usa a sessão ASP.NET para armazenar o resultado de cada sessão do cliente. Isso permite que o serviço mantenha o resultado em execução para cada cliente em várias chamadas para o serviço.
Observação
ASP.NET estado da sessão e sessões WCF são coisas muito diferentes. Consulte Sessão para obter detalhes sobre sessões do WCF.
O serviço tem uma dependência íntima no estado de sessão do ASP.NET e requer o modo de compatibilidade do ASP.NET para funcionar corretamente. Esses requisitos são expressos declarativamente aplicando o AspNetCompatibilityRequirements atributo.
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Required)]
public class CalculatorService : ICalculatorSession
{
double Result
{ // store result in AspNet Session
get {
if (HttpContext.Current.Session["Result"] != null)
return (double)HttpContext.Current.Session["Result"];
return 0.0D;
}
set
{
HttpContext.Current.Session["Result"] = value;
}
}
public void Clear()
{
Result = 0.0D;
}
public void AddTo(double n)
{
Result += n;
}
public void SubtractFrom(double n)
{
Result -= n;
}
public void MultiplyBy(double n)
{
Result *= n;
}
public void DivideBy(double n)
{
Result /= n;
}
public double Result()
{
return Result;
}
}
Quando você executa o exemplo, as solicitações e respostas da operação são exibidas na janela do console do cliente. Pressione ENTER na janela do cliente para desligar o cliente.
0, + 100, - 50, * 17.65, / 2 = 441.25
Press <ENTER> to terminate client.
Para configurar, compilar e executar o exemplo
Verifique se você executou o procedimento de instalaçãoOne-Time para os exemplos do Windows Communication Foundation.
Para compilar a edição .NET do C# ou do Visual Basic da solução, siga as instruções contidas em Como Compilar as Amostras do Windows Communication Foundation.
Depois que a solução tiver sido criada, execute Setup.bat para configurar o aplicativo ServiceModelSamples no IIS 7.0. O diretório ServiceModelSamples agora deve aparecer como um aplicativo IIS 7.0.
Para executar o exemplo em uma configuração de computador único ou entre computadores, siga as instruções em Executar os exemplos do Windows Communication Foundation.