Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A ServiceValidation-minta bemutatja, hogyan használható egyéni viselkedés a számítógépek szolgáltatásainak ellenőrzésére annak biztosítása érdekében, hogy megfelelnek bizonyos feltételeknek. Ebben a mintában a személyre szabott viselkedés ellenőrzi a szolgáltatásokat úgy, hogy minden végpontot átvizsgál, és ellenőrzi, tartalmaznak-e biztonságos kapcsolati elemeket. Ez a minta az első lépéseken alapul.
Megjegyzés:
A minta telepítési eljárása és összeállítási utasításai a témakör végén találhatók.
Végpontérvényesítés egyéni viselkedése
Ha felhasználói kódot ad hozzá az ValidateIServiceBehavior interfészben található metódushoz, egyéni viselkedést adhat egy szolgáltatásnak vagy végpontnak a felhasználó által meghatározott műveletek végrehajtásához. Az alábbi kód egy szolgáltatásban található végpontokon keresztüli ciklusok végrehajtására szolgál, amelyek biztonságos kötéseket keresnek a kötésgyűjteményeikben.
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.");
}
}
Ha hozzáadja a következő kódot Web.config fájlhoz, hozzáadja a serviceValidate szolgáltatás felismerendő viselkedési bővítményét.
<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>
Miután hozzáadta a viselkedésbővítményt a szolgáltatáshoz, hozzáadhatja a endpointValidate viselkedést a Web.config fájlban található viselkedések listájához, és így a szolgáltatáshoz.
<behaviors>
<serviceBehaviors>
<behavior name="CalcServiceSEB1">
<serviceMetadata httpGetEnabled="true" />
<endpointValidate />
</behavior>
</serviceBehaviors>
</behaviors>
A Web.config fájlhoz hozzáadott viselkedések és bővítményeik viselkedést alkalmaznak az egyes szolgáltatásokra, a Machine.config fájlhoz hozzáadva pedig a számítógépen aktív összes szolgáltatás viselkedését.
Megjegyzés:
Ha viselkedést ad hozzá az összes szolgáltatáshoz, javasolt biztonsági másolatot készíteni a Machine.config fájlról, mielőtt bármilyen módosítást végez.
Most futtassa a minta ügyfél\bin könyvtárában megadott ügyfelet. A rendszer kivételt jelez a következő üzenettel: "A kért szolgáltatás http://localhost/servicemodelsamples/service.svc nem aktiválható." Ez azért várható, mert a végpont nem biztonságosnak számít a végpont érvényesítési viselkedése miatt, és megakadályozza a szolgáltatás elindítását. A viselkedés egy belső kivételt is jelez, amely leírja, hogy melyik végpont nem biztonságos, és üzenetet ír a rendszer eseménynaplójának a "System.ServiceModel 4.0.0.0" forrás és a "WebHost" kategória alatt. Ebben a mintában a szolgáltatás nyomkövetését is bekapcsolhatja. Ez lehetővé teszi a felhasználó számára, hogy megtekintse a végpont-érvényesítési viselkedés által előidézett kivételeket az eredményként kapott szolgáltatáskövetések megnyitásával a Service Trace Viewer eszközzel.
Sikertelen végpontérvényesítési kivételüzenetek megtekintése az Eseménynaplóban
Kattintson a Start menüre, és válassza a Futtatás lehetőséget.
Írja be
eventvwrés kattintson az OK gombra.Az Eseménynapló ablakban kattintson az Alkalmazás gombra.
Kattintson duplán a nemrég hozzáadott "System.ServiceModel 4.0.0.0" eseményre az Alkalmazásablak "WebHost" kategóriájában a nem biztonságos végpontüzenetek megtekintéséhez.
A minta beállítása, összeállítása és futtatása
Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták One-Time beállítási eljárását.
A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse Windows Communication Foundation-mintákcímű témakör utasításait.
Ha a mintát egy vagy több gép közötti konfigurációban szeretné futtatni, kövesse A Windows Communication Foundation-minták futtatásacímű témakör utasításait.