Partilhar via


Como adicionar um ponto de extremidade AJAX ASP.NET sem usar a configuração

O Windows Communication Foundation (WCF) permite que você crie um serviço que expõe um ponto de extremidade habilitado para AJAX ASP.NET que pode ser chamado de JavaScript em um site cliente. Para criar esse ponto de extremidade, você pode usar um arquivo de configuração, como todos os outros pontos de extremidade WCF, ou usar um método que não exija nenhum elemento de configuração. Este tópico demonstra a segunda abordagem.

Para criar serviços com ASP.NET pontos de extremidade AJAX sem configuração, os serviços devem ser hospedados pelo IIS (Serviços de Informações da Internet). Para ativar um ponto de extremidade AJAX ASP.NET usando essa abordagem, especifique o WebScriptServiceHostFactory parâmetro como Factory na diretiva @ServiceHost no arquivo .svc. Essa fábrica personalizada é o componente que configura automaticamente um ponto de extremidade AJAX ASP.NET para que ele possa ser chamado de JavaScript em um site cliente.

Para obter um exemplo de trabalho, consulte o serviço AJAX sem configuração.

Para obter uma descrição geral de como configurar um ponto de extremidade AJAX ASP.NET usando elementos de configuração, consulte Como usar a configuração para adicionar um ponto de extremidade AJAX ASP.NET.

Para criar um serviço WCF básico

  1. Defina um contrato de serviço WCF básico com uma interface marcada com o ServiceContractAttribute atributo. Marque cada operação com o OperationContractAttributearquivo . Certifique-se de definir a Namespace propriedade.

    [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…  
    
    }  
    
  2. Implemente o ICalculator contrato de serviço com um CalculatorServicearquivo .

    public class CalculatorService : ICalculator  
    {  
        public double Add(double n1, double n2)  
        {  
            return n1 + n2;  
        }  
    
    //Other operations omitted…  
    
  3. Defina um namespace para as implementações e CalculatorService envolvendo-as ICalculator em um bloco de namespace.

    Namespace Microsoft.Ajax.Samples  
    {  
        //Include the code for ICalculator and Calculator here.  
    }  
    

Para hospedar o serviço nos Serviços de Informações da Internet sem configuração

  1. Crie um novo arquivo chamado service com uma extensão .svc no aplicativo. Edite este arquivo adicionando as informações apropriadas da diretiva @ServiceHost para o serviço. Especifique que o WebScriptServiceHostFactory deve ser usado na diretiva @ServiceHost para configurar automaticamente um ponto de extremidade AJAX ASP.NET.

    <%@ServiceHost
        language=c#
        Debug="true"
        Service="Microsoft.Ajax.Samples.CalculatorService"  
        Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory  
    %>  
    
  2. Crie o serviço e chame-o do cliente. Os Serviços de Informações da Internet (IIS) ativam o serviço quando chamados. Para obter mais informações sobre hospedagem no IIS, consulte Como hospedar um serviço WCF no IIS.

Para ligar para o serviço

  1. O ponto de extremidade é configurado em um endereço vazio relativo ao arquivo .svc, portanto, o serviço agora está disponível e pode ser invocado enviando solicitações para service.svc/<operation> - por exemplo, service.svc/Add para a Add operação. Você pode usá-lo inserindo a URL do serviço na coleção Scripts do controle ASP.NET AJAX Script Manager. Para obter um exemplo, consulte o serviço AJAX sem configuração.

Exemplo

O ponto de extremidade configurado automaticamente é criado em um endereço vazio em relação à URL base. Um arquivo de configuração também pode ser adicionado e usado com essa abordagem. Se o arquivo de configuração contiver definições de ponto de extremidade, esses pontos de extremidade serão adicionados ao ponto de extremidade configurado automaticamente.

Por exemplo, service.svc usa o WebScriptServiceHostFactory e o diretório de serviço contém um arquivo Web.config que define um ponto de extremidade para o mesmo serviço usando o BasicHttpBinding endereço relativo at the "soap". Nesse caso, o serviço contém dois pontos de extremidade: um em service.svc (que responde a ASP.NET solicitações AJAX) e outro em service.svc/soap (que responde a solicitações SOAP).

Se o arquivo de configuração definir um ponto de extremidade em um endereço relativo vazio e o WebScriptServiceHostFactory for usado, uma exceção será lançada e o serviço falhará ao iniciar.

Não é possível usar a configuração para modificar as configurações no ponto de extremidade configurado automaticamente. Se qualquer configuração (como uma cota de leitura) precisar ser modificada, você não deverá usar a abordagem livre de configuração removendo o WebScriptServiceHostFactory do arquivo .svc e criando uma entrada de configuração para o ponto de extremidade.

Se o seu serviço requer ASP.NET Modo de Compatibilidade - por exemplo, se ele usa a classe ou ASP.NET HttpContext mecanismos de autorização - um arquivo de configuração ainda é necessário para ativar esse modo. O elemento de configuração necessário é o <elemento serviceHostingEnvironment> , que deve ser adicionado da seguinte forma.

<system.serviceModel>

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> </system.serviceModel>

Para obter mais informações, consulte o tópico WCF Services and ASP.NET .

A WebScriptServiceHostFactory classe é uma classe derivada de ServiceHostFactory. Para obter uma explicação detalhada do mecanismo de fábrica do host de serviço, consulte o tópico Estendendo a hospedagem usando ServiceHostFactory .

Consulte também