Instrukcje: Dodawanie punktu końcowego AJAX ASP.NET bez używania konfiguracji
Program Windows Communication Foundation (WCF) umożliwia utworzenie usługi, która uwidacznia ASP.NET punkt końcowy z obsługą technologii AJAX, który można wywołać z języka JavaScript w witrynie sieci Web klienta. Aby utworzyć taki punkt końcowy, możesz użyć pliku konfiguracji, podobnie jak we wszystkich innych punktach końcowych programu WCF, lub użyć metody, która nie wymaga żadnych elementów konfiguracji. W tym temacie przedstawiono drugie podejście.
Aby tworzyć usługi z punktami końcowymi AJAX ASP.NET bez konfiguracji, usługi muszą być hostowane przez usługi Internet Information Services (IIS). Aby aktywować punkt końcowy ASP.NET AJAX przy użyciu tego podejścia, określ WebScriptServiceHostFactory parametr factory w dyrektywie @ServiceHost w pliku svc. Ta fabryka niestandardowa jest składnikiem, który automatycznie konfiguruje punkt końcowy AJAX ASP.NET tak, aby można go było wywołać z języka JavaScript w witrynie sieci Web klienta.
Aby zapoznać się z działającym przykładem, zobacz usługę AJAX bez konfiguracji.
Aby zapoznać się z opisem sposobu konfigurowania punktu końcowego AJAX ASP.NET przy użyciu elementów konfiguracji, zobacz Instrukcje: używanie konfiguracji do dodawania punktu końcowego AJAX ASP.NET.
Aby utworzyć podstawową usługę WCF
Zdefiniuj podstawowy kontrakt usługi WCF z interfejsem oznaczonym atrybutem ServiceContractAttribute . Oznacz każdą operację za pomocą .OperationContractAttribute Pamiętaj, aby ustawić Namespace właściwość .
[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… }
Zaimplementuj
ICalculator
kontrakt usługi za pomocą poleceniaCalculatorService
.public class CalculatorService : ICalculator { public double Add(double n1, double n2) { return n1 + n2; } //Other operations omitted…
Zdefiniuj przestrzeń nazw dla
ICalculator
implementacji iCalculatorService
, opakowując je w bloku przestrzeni nazw.Namespace Microsoft.Ajax.Samples { //Include the code for ICalculator and Calculator here. }
Aby hostować usługę w usługach Internet Information Services bez konfiguracji
Utwórz nowy plik o nazwie service z rozszerzeniem svc w aplikacji. Edytuj ten plik, dodając odpowiednie informacje o dyrektywie @ServiceHost dla usługi. Określ, że element WebScriptServiceHostFactory ma być używany w dyrektywie @ServiceHost w celu automatycznego konfigurowania punktu końcowego ASP.NET AJAX.
<%@ServiceHost language=c# Debug="true" Service="Microsoft.Ajax.Samples.CalculatorService" Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory %>
Skompiluj usługę i wywołaj ją z klienta. Usługi Internet Information Services (IIS) aktywuje usługę po wywołaniu. Aby uzyskać więcej informacji na temat hostowania w usługach IIS, zobacz Instrukcje: hostowanie usługi WCF w usługach IIS.
Aby wywołać usługę
- Punkt końcowy jest skonfigurowany pod pustym adresem względem pliku svc, więc usługa jest teraz dostępna i może być wywoływana przez wysyłanie żądań do pliku service.svc/<operation> — na przykład service.svc/Add dla
Add
operacji. Można go użyć, wprowadzając adres URL usługi do kolekcji Skrypty kontrolki ASP.NET AJAX Script Manager. Aby zapoznać się z przykładem, zobacz usługę AJAX bez konfiguracji.
Przykład
Automatycznie skonfigurowany punkt końcowy jest tworzony pod pustym adresem względem podstawowego adresu URL. Plik konfiguracji można również dodać i użyć w tym podejściu. Jeśli plik konfiguracji zawiera definicje punktów końcowych, te punkty końcowe zostaną dodane do punktu końcowego skonfigurowanego automatycznie.
Na przykład plik service.svc używa elementu WebScriptServiceHostFactory i katalog usługi zawiera plik Web.config, który definiuje punkt końcowy dla tej samej usługi przy użyciu BasicHttpBinding adresu względnego "soap". W takim przypadku usługa zawiera dwa punkty końcowe: jeden w pliku service.svc (który odpowiada na ASP.NET żądania AJAX), a drugi w pliku service.svc/soap (który odpowiada na żądania PROTOKOŁU SOAP).
Jeśli plik konfiguracji definiuje punkt końcowy pod pustym adresem względnym i WebScriptServiceHostFactory jest używany, zgłaszany jest wyjątek, a uruchomienie usługi nie powiedzie się.
Nie można użyć konfiguracji do modyfikowania ustawień w automatycznie skonfigurowanym punkcie końcowym. Jeśli należy zmodyfikować jakiekolwiek ustawienie (takie jak limit przydziału czytelnika), nie można użyć podejścia bez konfiguracji przez usunięcie WebScriptServiceHostFactory elementu z pliku svc i utworzenie wpisu konfiguracji dla punktu końcowego.
Jeśli usługa wymaga trybu zgodności ASP.NET — na przykład jeśli używa HttpContext klasy lub ASP.NET mechanizmów autoryzacji — plik konfiguracji jest nadal wymagany do włączenia tego trybu. Wymagany element konfiguracji jest <element serviceHostingEnvironment> , który należy dodać w następujący sposób.
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> </system.serviceModel>
Aby uzyskać więcej informacji, zobacz temat Usługi WCF i ASP.NET .
Klasa WebScriptServiceHostFactory jest klasą pochodną klasy ServiceHostFactory. Aby uzyskać szczegółowe wyjaśnienie mechanizmu fabryki hostów usług, zobacz temat Rozszerzanie hostingu przy użyciu elementu ServiceHostFactory .