Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ukázka ServiceValidation ukazuje, jak pomocí vlastního chování ověřovat služby v počítači, aby se zajistilo, že splňují konkrétní kritéria. V této ukázce jsou služby ověřovány pomocí vlastního chování, které zahrnuje prohledávání každého koncového bodu služby a kontrolu, zda obsahují prvky zabezpečené vazby. Tato ukázka je založená na začínáme.
Poznámka:
Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.
Vlastní chování pro ověřování koncového bodu
Přidáním uživatelského kódu do Validate metody obsažené v IServiceBehavior rozhraní lze vlastnímu chování dát službě nebo koncovému bodu za účelem provádění uživatelem definovaných akcí. Následující kód se používá k procházení každého koncového bodu obsaženého ve službě, kdy se hledají zabezpečená připojení v jejich kolekcích vazeb.
public void Validate(ServiceDescription serviceDescription,
ServiceHostBase serviceHostBase)
{
// Loop through each endpoint individually, gathering their
// binding elements.
foreach (ServiceEndpoint endpoint in serviceDescription.Endpoints)
{
secureElementFound = false;
// Retrieve the endpoint's binding element collection.
BindingElementCollection bindingElements =
endpoint.Binding.CreateBindingElements();
// Look to see if the binding elements collection contains any
// secure binding elements. Transport, Asymmetric, and Symmetric
// binding elements are all derived from SecurityBindingElement.
if ((bindingElements.Find<SecurityBindingElement>() != null) || (bindingElements.Find<HttpsTransportBindingElement>() != null) || (bindingElements.Find<WindowsStreamSecurityBindingElement>() != null) || (bindingElements.Find<SslStreamSecurityBindingElement>() != null))
{
secureElementFound = true;
}
// Send a message to the system event viewer when an endpoint is deemed insecure.
if (!secureElementFound)
throw new Exception(System.DateTime.Now.ToString() + ": The endpoint \"" + endpoint.Name + "\" has no secure bindings.");
}
}
Přidáním následujícího kódu do souboru Web.config přidáte rozšíření chování serviceValidate, které služba rozpozná.
<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name="endpointValidate" type="Microsoft.ServiceModel.Samples.EndpointValidateElement, endpointValidate, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
</extensions>
...
</system.serviceModel>
Jakmile je rozšíření chování přidáno do služby, je nyní možné přidat endpointValidate chování do seznamu chování v souboru Web.config a tak do služby.
<behaviors>
<serviceBehaviors>
<behavior name="CalcServiceSEB1">
<serviceMetadata httpGetEnabled="true" />
<endpointValidate />
</behavior>
</serviceBehaviors>
</behaviors>
Chování a jejich rozšíření přidaná do souboru Web.config aplikují chování na jednotlivé služby, zatímco při přidání do souboru Machine.config platí chování pro každou službu aktivní v počítači.
Poznámka:
Při přidávání chování do všech služeb se doporučuje před provedením jakékoli změny zálohovat soubor Machine.config.
Nyní spusťte klienta zadaného v adresáři client\bin této ukázky. Je vyvolána výjimka s následující zprávou: "Požadovanou službu http://localhost/servicemodelsamples/service.svc nelze aktivovat." To se očekává, protože koncový bod je považován za nezabezpečený v důsledku chování ověření koncového bodu a zabraňuje spuštění služby. Toto chování také vyvolá vnitřní výjimku, která popisuje, který koncový bod je nezabezpečený a zapíše zprávu do systémového prohlížeče událostí ve zdroji System.ServiceModel 4.0.0.0.0 a kategorii WebHost. V této ukázce je také možné zapnout trasování služby. To uživateli umožňuje zobrazit výjimky vyvolané ověřením chování koncového bodu otevřením výsledných trasování služby pomocí nástroje Prohlížeč trasování služby.
Zobrazení zpráv o výjimce neúspěšného ověření koncového bodu v Prohlížeči událostí
Klikněte na nabídku Start a vyberte Spustit.
Zadejte
eventvwra klepněte na tlačítko OK.V okně Prohlížeče událostí klepněte na tlačítko Aplikace.
Dvakrát klikněte na nedávno přidanou událost System.ServiceModel 4.0.0.0 v kategorii WebHost v okně Aplikace a zobrazte nezabezpečené zprávy koncového bodu.
Nastavení, sestavení a spuštění ukázky
Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.
Pokud chcete sestavit verzi C# nebo Visual Basic .NET řešení, postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.
Pokud chcete spustit ukázku v konfiguraci pro jeden počítač nebo pro více počítačů, postupujte podle pokynů v Spuštění ukázek Windows Communication Foundation.