Vorgehensweise: Hinzufügen eines ASP.NET AJAX-Endpunkts ohne Verwendung einer Konfiguration

Mit Windows Communication Foundation (WCF) können Sie einen Dienst erstellen, der einen ASP.NET AJAX-aktivierten Endpunkt verfügbar macht, der auf einer Client-Website von JavaScript aufgerufen werden kann. 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. In diesem Thema wird die zweite Methode veranschaulicht.

Um Dienste mit ASP.NET AJAX-Endpunkten ohne Konfiguration zu erstellen, müssen diese Dienste von Internetinformationsdiensten (IIS) gehostet werden. Um diesen Ansatz mit ASP.NET AJAX-Endpunkt zu aktivieren, geben Sie die WebScriptServiceHostFactory als Factory-Parameter in der @ServiceHost -Direktive in der SVC-Datei. 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.

Ein funktionsfähiges Beispiel finden Sie unter der AJAX-Dienst ohne Konfiguration.

Einen Überblick über das Konfigurieren von ASP.NET AJAX-Endpunkt mithilfe von Konfigurationselementen finden Sie unter Gewusst wie: Verwenden der Konfiguration zum Hinzufügen eines ASP.NET AJAX-Endpunkts.

So erstellen Sie einen WCF-Basisdienst

  1. Definieren Sie einen WCF Dienstvertrag mit einer Schnittstelle mit markiert die ServiceContractAttribute Attribut. Markieren Sie jeden Vorgang mit der OperationContractAttribute. Festlegen der Namespace Eigenschaft.

    [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.

    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.

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

So hosten Sie einen Dienst in Internetinformationsdiensten (IIS) ohne Konfiguration

  1. Erstellen Sie eine neue Datei mit einer SVC-Erweiterung in der Anwendung. Bearbeiten Sie diese Datei durch Hinzufügen des entsprechenden @ServiceHost -direktiveninformationen für den Dienst. Angeben, die die WebScriptServiceHostFactory in verwendet werden soll die @ServiceHost Richtlinie für die automatische Konfiguration von ASP.NET AJAX-Endpunkt.

    <%@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. Internetinformationsdienste (IIS) aktiviert den Dienst, sobald er aufgerufen wird. Weitere Informationen finden Sie unterHosting in IIS finden Sie unter Gewusst wie: Hosten eines WCF-Diensts in IIS.

So rufen Sie den Dienst auf

  1. Der Endpunkt wird bei einer leeren Adresse relativ zur SVC-Datei konfiguriert, damit der Dienst nun verfügbar ist und kann durch Senden von Anfragen an service.svc/ aufgerufen werden<> </> > – z. B. service.svc/Add für die Add Vorgang. Sie können ihn verwenden, indem Sie die Dienst-URL in die Scripts-Auflistung des ASP.NET AJAX Script Manager-Steuerelements eingeben. Ein Beispiel finden Sie unter der AJAX-Dienst ohne Konfiguration.

Beispiel

Der automatisch konfigurierte Endpunkt wird bei einer leeren Adresse relativ zur Basis-URL erstellt. Bei diesem Ansatz wird auch eine Konfigurationsdatei hinzugefügt und verwendet. Wenn die Konfigurationsdatei Endpunktdefinitionen enthält, werden diese Endpunkte dem automatisch konfigurierten Endpunkt hinzugefügt.

Service.svc verwendet z. B. die WebScriptServiceHostFactory und das Dienstverzeichnis enthält eine Web.config-Datei, einen Endpunkt für den gleichen mit definiert, die BasicHttpBinding zu "Soap" relative Adresse. 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).

Definiert die Konfigurationsdatei einen Endpunkt unter einer leeren relativen Adresse und die WebScriptServiceHostFactory wird verwendet, wird eine Ausnahme ausgelöst, und der Dienst nicht gestartet.

Sie können die Konfiguration nicht dazu verwenden, Einstellungen auf dem automatisch konfigurierten Endpunkt zu ändern. Wenn sein muss, eine Einstellung (etwa das readerkontingent) geändert haben, verwenden Sie nicht den konfigurationsfreien Ansatz durch Entfernen der WebScriptServiceHostFactory aus der SVC-Datei und einen Konfigurationseintrag für den Endpunkt.

Wenn der Dienst den ASP.NET-Kompatibilitätsmodus - z. B. erfordert, wenn es verwendet die HttpContext Klasse oder den ASP.NET-Autorisierungsmechanismus - eine Konfigurationsdatei erforderlich, damit dieser Modus aktiviert ist. Das erforderliche Konfigurationselement ist die <> > -Element, das wie folgt hinzugefügt werden muss.

<system.serviceModel>

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

Weitere Informationen finden Sie unterdie WCF-Dienste und ASP.NET Thema.

Die WebScriptServiceHostFactory Klasse ist eine abgeleitete Klasse von ServiceHostFactory. Eine ausführliche Erläuterung der Diensthostfactory-Mechanismus, finden Sie unter der erweitern Hosting mithilfe von ServiceHostFactory Thema.

Siehe auch

Erstellen von WCF-Diensten für ASP.NET-AJAX
Gewusst wie: Migrieren AJAX-aktivierter ASP.NET-Webdienste nach WCF