Internet Information Services által üzemeltetett WCF-szolgáltatás üzembe helyezése
Az Internet Information Servicesben (IIS) üzemeltetett Windows Communication Foundation (WCF) szolgáltatás fejlesztése és üzembe helyezése a következő feladatokból áll:
Győződjön meg arról, hogy az IIS, a ASP.NET, a WCF és a WCF aktiválási összetevő megfelelően van telepítve és regisztrálva.
Hozzon létre egy új IIS-alkalmazást, vagy használjon újra egy meglévő ASP.NET alkalmazást.
Hozzon létre egy .svc fájlt a WCF szolgáltatáshoz.
A szolgáltatás implementációjának üzembe helyezése az IIS-alkalmazásban.
Konfigurálja a WCF szolgáltatást.
Az IIS által üzemeltetett WCF-szolgáltatás létrehozásának részletes útmutatója: Útmutató: WCF-szolgáltatás üzemeltetése az IIS-ben.
Győződjön meg arról, hogy az IIS, a ASP.NET és a WCF megfelelően van telepítve és regisztrálva
A WCF, az IIS és a ASP.NET telepítve kell lennie ahhoz, hogy az IIS által üzemeltetett WCF-szolgáltatások megfelelően működjenek. A WCF (a .NET-keretrendszer részeként), a ASP.NET és az IIS telepítésének eljárásai az operációs rendszertől függően változnak. A WCF és a .NET-keretrendszer telepítéséről további információt a fejlesztőknek készült .NET-keretrendszer telepítése című témakörben talál. Az IIS Windows 10 rendszeren való telepítéséhez nyissa meg a Programok és szolgáltatások lehetőséget a Vezérlőpult, majd válassza a Windows-szolgáltatások be- vagy kikapcsolása lehetőséget. A Windows-szolgáltatásokban válassza az Internet Information Services lehetőséget, majd kattintson az OK gombra.
Az IIS más operációs rendszerekre való telepítésével kapcsolatos utasításokat az IIS telepítése Windows Vista és Windows 7 rendszeren, valamint az IIS 8.5 telepítése Windows Server 2012 R2 rendszeren című témakörben találja.
A .NET-keretrendszer telepítési folyamata automatikusan regisztrálja a WCF-et az IIS-ben, ha az IIS már megtalálható a gépen. Ha az IIS .NET-keretrendszer után van telepítve, további lépésre van szükség a WCF IIS-ben és ASP.NET való regisztrálásához. Ezt az operációs rendszertől függően az alábbiak szerint teheti meg:
Windows 7 és Windows Server 2003: A ServiceModel regisztrációs eszköz (ServiceModelReg.exe) eszközzel regisztrálhatja a WCF-et az IIS-ben. Az eszköz használatához írja be
ServiceModelReg.exe /i /x
a Visual Studio fejlesztői parancssorába vagy a Visual Studio Developer PowerShellbe.Windows 7: Végül ellenőriznie kell, hogy ASP.NET .NET-keretrendszer 4-es vagy újabb verziójának használatára van-e konfigurálva. Ehhez futtassa a ASPNET_Regiis eszközt a
–i
beállítással. További információ: ASP.NET IIS regisztrációs eszköz.
Új IIS-alkalmazás létrehozása vagy meglévő ASP.NET-alkalmazás újrafelhasználása
Az IIS által üzemeltetett WCF-szolgáltatásoknak egy IIS-alkalmazáson belül kell lenniük. Létrehozhat egy új IIS-alkalmazást, amely kizárólag WCF-szolgáltatásokat üzemeltet. Másik lehetőségként üzembe helyezhet egy WCF-szolgáltatást egy olyan meglévő alkalmazásban, amely már ASP.NET 2.0-s tartalmat üzemeltet (például .aspx oldalakat és ASP.NET webszolgáltatásokat [ASMX]). Ezekről a lehetőségekről a WCF-szolgáltatások és a ASP.NET "WCF-szolgáltatások üzemeltetése ASP.NET ASP.NET kompatibilitási módban" című szakaszában talál további információt.
Vegye figyelembe, hogy az IIS 6.0-s és újabb verziói rendszeresen újraindítanak egy izolált objektumorientált programozási alkalmazást. Az alapértelmezett érték 1740 perc. A maximális támogatott érték 71 582 perc. Ez az újraindítás le lehet tiltani. A tulajdonságról további információt a PeriodicRestartTime című témakörben talál.
.svc fájl létrehozása a WCF szolgáltatáshoz
Az IIS-ben üzemeltetett WCF-szolgáltatások speciális tartalomfájlokként (.svc fájlok) jelennek meg az IIS-alkalmazásban. Ez a modell hasonló ahhoz, ahogyan az ASMX-oldalak az IIS-alkalmazásokban .asmx fájlokként jelennek meg. A .svc fájl tartalmaz egy WCF-specifikus feldolgozási irányelvet (@ServiceHost), amely lehetővé teszi, hogy a WCF üzemeltetési infrastruktúrája aktiválja az üzemeltetett szolgáltatásokat a bejövő üzenetekre válaszul. A .svc fájlok leggyakoribb szintaxisa az alábbi utasításban található.
<% @ServiceHost Service="MyNamespace.MyServiceImplementationTypeName" %>
Ez a @ServiceHost irányelvből és egyetlen attribútumból áll. Service
Az attribútum értéke a Service
szolgáltatás-implementáció közös nyelvi futtatókörnyezetének (CLR) neve. Ennek az irányelvnek a használata alapvetően egyenértékű egy szolgáltatás gazdagépének a következő kóddal történő létrehozásával.
new ServiceHost( typeof( MyNamespace.MyServiceImplementationTypeName ) );
További üzemeltetési konfiguráció, például a szolgáltatáshoz tartozó alapcímek listájának létrehozása is elvégezhető. Egyéni megoldásokkal ServiceHostFactory is kibővítheti az irányelveket az egyéni üzemeltetési megoldásokkal való használatra. A WCF-szolgáltatásokat üzemeltető IIS-alkalmazások nem felelősek a példányok létrehozásának és élettartamának kezeléséért ServiceHost . A felügyelt WCF üzemeltetési infrastruktúra dinamikusan hozza létre a szükséges ServiceHost példányt, amikor az első kérés érkezik a .svc fájlhoz. A példány csak akkor jelenik meg, ha az kifejezetten kóddal van lezárva, vagy amikor az alkalmazást újrafeldolgozták.
A .svc fájlok szintaxisával kapcsolatos további információkért lásd : @ServiceHost.
A szolgáltatás implementációjának üzembe helyezése az IIS-alkalmazásban
Az IIS-ben üzemeltetett WCF-szolgáltatások ugyanazt a dinamikus fordítási modellt használják, mint ASP.NET 2.0. Az ASP.NET-hoz hasonlóan az IIS által üzemeltetett WCF-szolgáltatások implementációs kódját többféleképpen is üzembe helyezheti különböző helyeken, az alábbiak szerint:
Előre összeállított .dll fájlként, amely a globális szerelvénygyorsítótárban (GAC) vagy az alkalmazás \bin könyvtárában található. Az előre összeállított bináris fájlok csak az osztálytár új verziójának üzembe helyezéséig frissülnek.
Az alkalmazás \App_Code könyvtárában található, nem lefordított forrásfájlokként. A könyvtárban található forrásfájlok dinamikusan szükségesek az alkalmazás első kérésének feldolgozásakor. A \App_Code könyvtárban lévő fájlok módosításai miatt a teljes alkalmazás újraindul, és a következő kérés érkezésekor újrafordítódik.
A .svc fájlban közvetlenül elhelyezett, nem lefordított kódként. A implementációs kód a szolgáltatás .svc fájljában is elhelyezhető a @ServiceHost irányelv után. A beágyazott kód módosításai miatt az alkalmazás újraindul, és a következő kérés érkezésekor újrafordítódik.
A ASP.NET 2.0 fordítási modellről további információt ASP.NET Fordítás áttekintése című témakörben talál.
A WCF szolgáltatás konfigurálása
Az IIS által üzemeltetett WCF-szolgáltatások a konfigurációjukat az applications Web.config fájlban tárolják. Az IIS által üzemeltetett szolgáltatások ugyanazokat a konfigurációs elemeket és szintaxist használják, mint az IIS-en kívül üzemeltetett WCF-szolgáltatások. Az alábbi korlátozások azonban egyediek az IIS üzemeltetési környezetében:
Az IIS által üzemeltetett szolgáltatások alapcímei.
Az IIS-en kívüli WCF-szolgáltatásokat üzemeltető alkalmazások úgy szabályozhatják az általuk üzemeltetett szolgáltatások alapcímét, hogy átadnak egy alapcím-URI-t a ServiceHost konstruktornak, vagy egy gazdagépelemet> biztosítanak <a szolgáltatás konfigurációjában. Az IIS-ben üzemeltetett szolgáltatások nem tudják szabályozni az alapcímüket; az IIS által üzemeltetett szolgáltatás alapcíme a .svc fájl címe.
Végpontcímek az IIS által üzemeltetett szolgáltatásokhoz
Az IIS-ben üzemeltetett végpontcímek mindig a szolgáltatást képviselő .svc fájl címéhez viszonyítva jelennek meg. Ha például egy WCF-szolgáltatás alapcíme a következő végpontkonfigurációval rendelkezik http://localhost/Application1/MyService.svc
:
<endpoint address="anotherEndpoint" />
Ez egy végpontot biztosít, amely a címen http://localhost/Application1/MyService.svc/anotherEndpoint
érhető el.
Hasonlóképpen, a relatív címként üres sztringet használó végpontkonfigurációs elem egy végpontot http://localhost/Application1/MyService.svc
biztosít, amely az alapcím.
<endpoint address="" />
Az IIS által üzemeltetett szolgáltatásvégpontokhoz mindig relatív végpontcímeket kell használnia. A teljes végpontcím (például ) megadása a szolgáltatás üzembe helyezésének hibáihoz vezethet, http://localhost/MyService.svc
ha a végpont címe nem a végpontot kihelyező szolgáltatást üzemeltető IIS-alkalmazásra mutat. A relatív végpontcímek üzemeltetett szolgáltatásokhoz való használata elkerüli ezeket a lehetséges ütközéseket.
Elérhető átvitelek
Az IIS 5.1-ben és az IIS 6.0-ban üzemeltetett WCF-szolgáltatások HTTP-alapú kommunikációra korlátozódnak. Ezeken az IIS-platformokon egy üzemeltetett szolgáltatás http-kötés használatára való konfigurálása hibát eredményez a szolgáltatás aktiválása során. Az IIS 7.0 esetében a támogatott átvitelek közé tartozik a HTTP, a Net.TCP, a Net.Pipe, a Net.MSMQ és az msmq.formatname a meglévő MSMQ-alkalmazásokkal való visszamenőleges kompatibilitás érdekében.
HTTP átviteli biztonság
Az IIS által üzemeltetett WCF-szolgáltatások http átviteli biztonságot használhatnak (például HTTPS- és HTTP-hitelesítési sémákat, például alapszintű, kivonatoló és Windows integrált hitelesítést), amennyiben a szolgáltatást tartalmazó IIS virtuális könyvtár támogatja ezeket a beállításokat. Az üzemeltetett végpont kötésének HTTP átviteli biztonsági beállításainak meg kell egyeznie az azt tartalmazó IIS virtuális könyvtár átviteli biztonsági beállításaival.
A HTTP-kivonatoló hitelesítés használatára konfigurált WCF-végpontnak például egy olyan IIS virtuális könyvtárban kell lennie, amely a HTTP-kivonatoló hitelesítés engedélyezésére is konfigurálva van. Az IIS-beállítások és a WCF-végpontbeállítások nem egyező kombinációi hibát eredményeznek a szolgáltatás aktiválása során.