Share via


@ServiceHost

Ordnet die Factory zu, die zum Generieren des Diensthosts mit dem zu hostenden Dienst verwendet wird, sowie andere Programmieraspekte, die für den Zugriff und die Kompilierung des in der SVC-Datei enthaltenen Hostingcodes erforderlich sind.

Syntax

<% @ServiceHost
Service = "Service, ServiceNamespace"
Factory = "Factory, FactoryNamespace"
Debug = "Debug"
Language = "Language"
CodeBehind = "CodeBehind"
%>

Attribute

Dienst

Der CLR-Typname des gehosteten Diensts. Dabei sollte es sich um einen qualifizierten Namen eines Typs handeln, der mindestens einen Dienstvertrag implementiert.

Factory

Der CLR-Typname der Diensthostfactory, der zum Instanziieren des Diensthosts verwendet wird. Dieses Attribut ist optional. Falls nicht angegeben, wird die Standard-ServiceHostFactory verwendet, die eine Instanz von ServiceHost zurückgibt.

Debuggen

Zeigt an, ob der Windows Communication Foundation (WCF)-Dienst mit Debugsymbolen kompiliert werden soll. Lautet true, wenn der WCF-Dienst mit Debugsymbolen kompiliert werden soll, andernfalls false.

Sprache

Gibt die Sprache zum Kompilieren des gesamten Inlinecodes in der Datei (SVC) an. Die Werte können jede von .NET unterstützte Sprache darstellen, darunter C#, VB und JS, die sich jeweils auf C#, Visual Basic .NET bzw. JScript .NET beziehen. Dieses Attribut ist optional.

CodeBehind

Gibt die Quelldatei an, die den XML-Webdienst implementiert, wenn sich die Klasse, die den XML-Webdienst implementiert, nicht in derselben Datei befindet und nicht in eine Assembly kompiliert oder im Verzeichnis \Bin gespeichert wurde.

Bemerkungen

Der ServiceHost, der verwendet wird, um den Dienst zu hosten, ist ein Aspekt der Erweiterbarkeit innerhalb des Windows Communication Foundation (WCF)-Programmiermodells. Ein Factorymuster wird zum Instanziieren von ServiceHost verwendet, da es sich möglicherweise um einen polymorphen Typ handelt, der von der Hostumgebung nicht direkt instanziiert werden sollte.

Die Standardimplementierung verwendet ServiceHostFactory, um eine Instanz von ServiceHost zu erstellen. Sie können jedoch auch eine eigene Factory bereitstellen (eine, die den abgeleiteten Host zurückgibt), indem Sie den CLR-Typnamen Ihrer Factoryimplementierung in der @ServiceHost-Anweisung angeben.

Wenn Sie eine eigene benutzerdefinierte Diensthostfactory statt der Standardfactory verwenden möchten, geben Sie einfach wie folgt den Typnamen in der @ServiceHost-Anweisung an.

<% @ServiceHost Factory="DerivedFactory" Service="MyService" %>

Halten Sie die Factoryimplementierungen so einfach wie möglich. Falls die benutzerdefinierte Logik umfassend ist, kann der Code einfacher wiederverwendet werden, wenn Sie diese Logik im Host und nicht in der Factory platzieren.

Wenn Sie zum Beispiel einen AJAX-fähigen Endpunkt für MyService aktivieren möchten, legen Sie WebScriptServiceHostFactory für den Wert des Factory-Attributs und nicht die Standard-ServiceHostFactory in der @ServiceHost-Anweisung fest, wie im folgenden Beispiel dargestellt:

<% @ServiceHost
Service="MyService"
Language="C#"
Debug="true"
Factory="WebScriptServiceHostFactory"
%>

Siehe auch