Vorgehensweise: Hinzufügen eines ASP.NET AJAX-Endpunkts ohne Verwendung einer KonfigurationHow to: Add an ASP.NET AJAX Endpoint Without Using Configuration

Windows Communication Foundation (WCF) ermöglicht Ihnen die Erstellung ein Diensts, das einen ASP.NET AJAX-aktivierten Endpunkt verfügbar macht, der auf eine Client-Website von JavaScript aufgerufen werden können.Windows Communication Foundation (WCF) allows you to create a service that exposes an ASP.NET AJAX-enabled endpoint that can be called from JavaScript on a client Web site. Zum Erstellen eines solchen Endpunkts können Sie entweder (wie bei allen anderen WCF-Endpunkten) eine Konfigurationsdatei verwenden, oder Sie können eine Methode einsetzen, die keine Konfigurationselemente benötigt.To create such an endpoint, you can either use a configuration file, as with all other WCF endpoints, or use a method that does not require any configuration elements. In diesem Thema wird die zweite Methode veranschaulicht.This topic demonstrates the second approach.

Um Dienste mit ASP.NET AJAX-Endpunkten ohne Konfiguration zu erstellen, müssen diese Dienste von Internetinformationsdiensten (IIS) gehostet werden.To create services with ASP.NET AJAX endpoints without configuration, the services must be hosted by Internet Information Services (IIS). Geben Sie zum Aktivieren von ASP.NET AJAX-Endpunkt mit diesem Ansatz die WebScriptServiceHostFactory als Factory-Parameter in der @ServiceHost -Direktive in der SVC-Datei.To activate an ASP.NET AJAX endpoint using this approach, specify the WebScriptServiceHostFactory as the Factory parameter in the @ServiceHost directive in the .svc file. Diese benutzerdefinierte Factory ist die Komponente, die automatisch einen ASP.NET AJAX-Endpunkt konfiguriert, damit er auf einer Client-Website von JavaScript aufgerufen werden kann.This custom factory is the component that automatically configures an ASP.NET AJAX endpoint so that it can be called from JavaScript on a client Web site.

Ein Arbeitsbeispiel finden Sie unter der AJAX-Dienst ohne Konfiguration.For a working example, see the AJAX Service Without Configuration.

Einen Überblick über die zum Konfigurieren von ASP.NET AJAX-Endpunkt mithilfe von Konfigurationselementen finden Sie unter Vorgehensweise: Verwenden der Konfiguration zum Hinzufügen eines ASP.NET AJAX-Endpunkts.For an outline of how to configure an ASP.NET AJAX endpoint using configuration elements, see How to: Use Configuration to Add an ASP.NET AJAX Endpoint.

So erstellen Sie einen WCF-BasisdienstTo create a basic WCF service

  1. Definieren Sie einen grundlegenden WCF-Dienstvertrag mit einer Schnittstelle, die mit markierten der ServiceContractAttribute Attribut.Define a basic WCF service contract with an interface marked with the ServiceContractAttribute attribute. Markieren Sie jeden Vorgang mit OperationContractAttribute.Mark each operation with the OperationContractAttribute. Stellen Sie sicher, dass Sie die Namespace-Eigenschaft festlegen.Be sure to set the Namespace property.

    [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. Implementieren Sie den ICalculator-Dienstvertrag mit CalculatorService.Implement the ICalculator service contract with a CalculatorService.

    public class CalculatorService : ICalculator  
    {  
        public double Add(double n1, double n2)  
        {  
            return n1 + n2;  
        }  
    
    //Other operations omitted…  
    
  3. Definieren Sie einen Namespace für die ICalculator- und die CalculatorService-Implementierung, indem Sie sie in einen Namespaceblock einschließen.Define a namespace for the ICalculator and CalculatorService implementations by wrapping them in a namespace block.

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

So hosten Sie einen Dienst in Internetinformationsdiensten (IIS) ohne KonfigurationTo host the service in Internet Information Services without configuration

  1. Erstellen Sie eine neue Datei mit einer SVC-Erweiterung in der Anwendung.Create a new file named service with a .svc extension in the application. Bearbeiten Sie diese Datei durch Hinzufügen der entsprechenden @ServiceHost Richtlinie Informationen für den Dienst.Edit this file by adding the appropriate @ServiceHost directive information for the service. Angeben, die die WebScriptServiceHostFactory in verwendet werden soll die @ServiceHost Richtlinie automatisch einen ASP.NET AJAX-Endpunkt zu konfigurieren.Specify that the WebScriptServiceHostFactory is to be used in the @ServiceHost directive to automatically configure an ASP.NET AJAX endpoint.

    <%@ServiceHost   
        language=c#   
        Debug="true"   
        Service="Microsoft.Ajax.Samples.CalculatorService"  
        Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory  
    %>  
    
  2. Erstellen Sie den Dienst, und rufen Sie ihn vom Client aus auf.Build the service and call it from the client. Internetinformationsdienste (IIS) aktiviert den Dienst, sobald er aufgerufen wird.Internet Information Services (IIS) activates the service when called. Weitere Informationen zum hosting in IIS finden Sie unter wie: Hosten eines WCF-Diensts in IIS.For more information about hosting in IIS, see How to: Host a WCF Service in IIS.

So rufen Sie den Dienst aufTo call the service

  1. Der Endpunkt ist eine leere Adresse relativ zur SVC-Datei konfiguriert, damit der Dienst jetzt verfügbar ist und kann durch Senden von Anforderungen an service.svc/ aufgerufen werden<Vorgang > – z. B. service.svc/Add für die Add Vorgang.The endpoint is configured at an empty address relative to the .svc file, so the service is now available and can be invoked by sending requests to service.svc/<operation> - for example, service.svc/Add for the Add operation. Sie können ihn verwenden, indem Sie die Dienst-URL in die Scripts-Auflistung des ASP.NET AJAX Script Manager-Steuerelements eingeben.You can use it by entering the service URL into the Scripts collection of the ASP.NET AJAX Script Manager control. Ein Beispiel finden Sie die AJAX-Dienst ohne Konfiguration.For an example, see the AJAX Service Without Configuration.

BeispielExample

Der automatisch konfigurierte Endpunkt wird bei einer leeren Adresse relativ zur Basis-URL erstellt.The automatically-configured endpoint is created at an empty address relative to the base URL. Bei diesem Ansatz wird auch eine Konfigurationsdatei hinzugefügt und verwendet.A configuration file can also be added and used with this approach. Wenn die Konfigurationsdatei Endpunktdefinitionen enthält, werden diese Endpunkte dem automatisch konfigurierten Endpunkt hinzugefügt.If the configuration file contains endpoint definitions, these endpoints are added to the automatically-configured endpoint.

Die Datei "service.svc" verwendet beispielsweise die WebScriptServiceHostFactory, und das Dienstverzeichnis enthält eine Web.config-Datei, die mithilfe der BasicHttpBinding einen Endpunkt für den gleichen Dienst definiert, wobei für diesen eine zu "soap" relative Adresse angegeben ist.For example, service.svc uses the WebScriptServiceHostFactory and the service directory contains a Web.config file that defines an endpoint for the same service using the BasicHttpBinding at the "soap" relative address. In diesem Fall enthält der Dienst zwei Endpunkte: einen unter service.svc (der auf ASP.NET AJAX-Anforderungen antwortet) und einen weiteren unter service.svc/soap (der auf SOAP-Anforderungen antwortet).In this case, the service contains two endpoints: one at service.svc (which responds to ASP.NET AJAX requests) and another at service.svc/soap (which responds to SOAP requests).

Definiert die Konfigurationsdatei einen Endpunkt unter einer leeren relativen Adresse und wird WebScriptServiceHostFactory verwendet, wird eine Ausnahme ausgelöst, und der Start des Diensts schlägt fehl.If the configuration file defines an endpoint at an empty relative address and the WebScriptServiceHostFactory is used, an exception is thrown and the service fails to start.

Sie können die Konfiguration nicht dazu verwenden, Einstellungen auf dem automatisch konfigurierten Endpunkt zu ändern.You cannot use configuration to modify settings on the automatically-configured endpoint. Muss eine Einstellung (etwa das Readerkontingent) geändert werden, dürfen Sie nicht den konfigurationsfreien Ansatz verwenden, indem Sie WebScriptServiceHostFactory aus der SVC-Datei entfernen und einen Konfigurationseintrag für den Endpunkt einfügen.If any setting (such as a reader quota) must be modified, you must not use the configuration-free approach by removing the WebScriptServiceHostFactory from the .svc file and creating a configuration entry for the endpoint.

Wenn Ihr Dienst den ASP.NET-Kompatibilitätsmodus erfordert – etwa weil er die HttpContext-Klasse oder den ASP.NET-Autorisierungsmechanismus verwendet – ist eine Konfigurationsdatei erforderlich, damit dieser Modus aktiviert werden kann.If your service requires ASP.NET Compatibility Mode - for example, if it uses the HttpContext class or ASP.NET authorization mechanisms - a configuration file is still required to turn on this mode. Das Konfigurationselement, das erforderlich ist der <ServiceHostingEnvironment > -Element, das wie folgt hinzugefügt werden muss.The configuration element required is the <serviceHostingEnvironment> element, which must be added as follows.

<system.serviceModel>

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

Weitere Informationen finden Sie unter der WCF-Dienste und ASP.NET Thema.For more information, see the WCF Services and ASP.NET topic.

Bei der WebScriptServiceHostFactory-Klasse handelt es sich um eine abgeleitete Klasse von ServiceHostFactory.The WebScriptServiceHostFactory class is a derived class of ServiceHostFactory. Eine ausführliche Erläuterung des Diensts Host Factory angibt, finden Sie unter der erweitern Hosting mithilfe von ServiceHostFactory Thema.For a detailed explanation of the service host factory mechanism, see the Extending Hosting Using ServiceHostFactory topic.

Siehe auchSee Also

Erstellen von WCF-Diensten für ASP.NET AJAXCreating WCF Services for ASP.NET AJAX
Vorgehensweise: Migrieren AJAX-aktivierter ASP.NET-Webdienste zu WCFHow to: Migrate AJAX-Enabled ASP.NET Web Services to WCF