Dela via


Slutpunktsadresser

Varje slutpunkt har en associerad adress som används för att hitta och identifiera slutpunkten. Den här adressen består främst av en URI (Uniform Resource Identifier), som anger slutpunktens plats. Slutpunktsadressen representeras i WCF-programmeringsmodellen (Windows Communication Foundation) av EndpointAddress klassen, som innehåller en valfri Identity egenskap som möjliggör autentisering av slutpunkten av andra slutpunkter som utbyter meddelanden med den och en uppsättning valfria Headers egenskaper som definierar alla andra SOAP-huvuden som krävs för att nå tjänsten. De valfria rubrikerna ger ytterligare och mer detaljerad adressinformation för att identifiera eller interagera med tjänstslutpunkten. Adressen till en slutpunkt representeras på tråden som en EPR (WS-Addressing Endpoint Reference).

URI-struktur för en adress

Adress-URI:n för de flesta transporter har fyra delar. Till exempel kan de fyra delarna av URI http://www.fabrikam.com:322/mathservice.svc/secureEndpoint :n specificeras på följande sätt:

  • System: http:

  • Maskin: www.fabrikam.com

  • (valfritt) Port: 322

  • Sökväg: /mathservice.svc/secureEndpoint

Definiera en adress för en tjänst

Slutpunktsadressen för en tjänst kan anges antingen imperativt med hjälp av kod eller deklarativt via konfiguration. Det är vanligtvis inte praktiskt att definiera slutpunkter i kod eftersom bindningar och adresser för en distribuerad tjänst vanligtvis skiljer sig från de som används när tjänsten utvecklas. I allmänhet är det mer praktiskt att definiera tjänstslutpunkter med hjälp av konfiguration i stället för kod. Genom att hålla bindnings- och adressinformationen borta från koden kan de ändras utan att behöva omkompilera eller distribuera om programmet.

Definiera en adress i konfigurationen

Om du vill definiera en slutpunkt i en konfigurationsfil använder du slutpunktselementet><. Mer information och ett exempel finns i Ange en slutpunktsadress.

Definiera en adress i kod

En slutpunktsadress kan skapas i kod med EndpointAddress -klassen. Mer information och ett exempel finns i Ange en slutpunktsadress.

Slutpunkter i WSDL

En slutpunktsadress kan också representeras i WSDL som ett WS-Addressing EPR-element i motsvarande slutpunktselement wsdl:port . EPR innehåller slutpunktens adress samt eventuella adressegenskaper. Mer information och ett exempel finns i Ange en slutpunktsadress.

Stöd för flera IIS-bindningar i .NET Framework 3.5

Internetleverantörer är ofta värdar för många program på samma server och plats för att öka platstätheten och sänka den totala ägandekostnaden. Dessa program är vanligtvis bundna till olika basadresser. En IIS-webbplats (Internet Information Services) kan innehålla flera program. Programmen på en webbplats kan nås via en eller flera IIS-bindningar.

IIS-bindningar innehåller två typer av information: ett bindningsprotokoll och bindningsinformation. Bindningsprotokollet definierar schemat som kommunikationen sker över, och bindningsinformation är den information som används för att komma åt webbplatsen.

I följande exempel visas de komponenter som kan finnas i en IIS-bindning:

  • Bindningsprotokoll: HTTP

  • Bindningsinformation: IP-adress, port, värdhuvud

IIS kan ange flera bindningar för varje plats, vilket resulterar i flera basadresser för varje schema. Före .NET Framework 3.5 hade WCF inte stöd för flera adresser för ett schema och, om de angavs, kastade en ArgumentException under aktiveringen.

Med .NET Framework 3.5 kan Internetleverantörer vara värdar för flera program med olika basadresser för samma schema på samma plats.

En webbplats kan till exempel innehålla följande basadresser:

  • http://payroll.myorg.com/Service.svc

  • http://shipping.myorg.com/Service.svc

Med .NET Framework 3.5 anger du ett prefixfilter på AppDomain-nivå i konfigurationsfilen. Det gör du med elementet <baseAddressPrefixFilters> , som innehåller en lista med prefix. De inkommande basadresserna, som tillhandahålls av IIS, filtreras baserat på den valfria prefixlistan. När ett prefix inte har angetts skickas alla adresser som standard igenom. Om du anger prefixet får du bara den matchande basadressen för det schemat som ska skickas.

Följande är ett exempel på konfigurationskod som använder prefixfiltren.

<system.serviceModel>  
  <serviceHostingEnvironment>  
     <baseAddressPrefixFilters>  
        <add prefix="net.tcp://payroll.myorg.com:8000"/>  
        <add prefix="http://shipping.myorg.com:8000"/>  
    </baseAddressPrefixFilters>  
  </serviceHostingEnvironment>  
</system.serviceModel>  

I föregående exempel net.tcp://payroll.myorg.com:8000 , och http://shipping.myorg.com:8000 är de enda basadresserna, för respektive scheman, som skickas igenom.

baseAddressPrefixFilter Stöder inte jokertecken.

Basadresserna som tillhandahålls av IIS kan ha adresser som är bundna till andra scheman som inte finns i baseAddressPrefixFilters listan. Dessa adresser filtreras inte bort.

Stöd för flera IIS-bindningar i .NET Framework 4 och senare

Från och med .NET 4 kan du aktivera stöd för flera bindningar i IIS utan att behöva välja en enda basadress, genom att ange ServiceHostingEnvironmentinställningen till MultipleSiteBindingsEnabled true. Det här stödet är begränsat till HTTP-protokollscheman.

Följande är ett exempel på konfigurationskod som använder multipleSiteBindingsEnabled på <serviceHostingEnvironment>.

<system.serviceModel>  
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" >  
  </serviceHostingEnvironment>  
</system.serviceModel>  

Alla baseAddressPrefixFilters-inställningar ignoreras för både HTTP- och icke-HTTP-protokoll när flera platsbindningar aktiveras med den här inställningen.

Mer information och exempel finns i Stöd för flera IIS-webbplatsbindningar och MultipleSiteBindingsEnabled.

Utöka adressering i WCF-tjänster

Standardadressmodellen för WCF-tjänster använder slutpunktsadress-URI:n för följande ändamål:

  • Om du vill ange tjänstens lyssningsadress, platsen där slutpunkten lyssnar efter meddelanden,

  • För att ange SOAP-adressfiltret förväntar sig den adress som en slutpunkt förväntar sig som en SOAP-rubrik.

Värdena för vart och ett av dessa ändamål kan anges separat, vilket möjliggör flera tillägg av adresser som omfattar användbara scenarier:

  • SOAP-mellanhänder: ett meddelande som skickas av en klient passerar en eller flera ytterligare tjänster som bearbetar meddelandet innan det når sitt slutmål. SOAP-mellanhänder kan utföra olika uppgifter, till exempel cachelagring, routning, belastningsutjämning eller schemavalidering på meddelandena. Det här scenariot uppnås genom att skicka meddelanden till en separat fysisk adress (via) som riktar sig till mellanhanden snarare än bara till en logisk adress (wsa:To) som riktar sig mot det slutliga målet.

  • Slutpunktens avlyssningsadress är en privat URI och är inställd på ett annat värde än dess listenURI egenskap.

Den transportadress som via anges är den plats där ett meddelande ska skickas på väg till någon annan fjärradress som anges av parametern to där tjänsten finns. I de flesta Internetscenarier via är URI:n samma som Uri egenskapen för tjänstens slutliga to adress. Du kan bara skilja mellan dessa två adresser när du måste utföra manuell routning.

Adresseringshuvuden

En slutpunkt kan hanteras av en eller flera SOAP-huvuden utöver dess grundläggande URI. En uppsättning scenarier där detta är användbart är en uppsättning SOAP-mellanliggande scenarier där en slutpunkt kräver att klienter i slutpunkten inkluderar SOAP-huvuden som är riktade till mellanhänder.

Du kan definiera anpassade adresshuvuden på två sätt– med hjälp av antingen kod eller konfiguration:

Konfiguration är vanligtvis att föredra framför kod, eftersom du kan ändra rubrikerna efter distributionen.

Anpassade lyssningsadresser

Du kan ange lyssningsadressen till ett annat värde än slutpunktens URI. Detta är användbart i mellanliggande scenarier där SOAP-adressen som ska exponeras är en offentlig SOAP-mellanhand, medan adressen där slutpunkten faktiskt lyssnar är en privat nätverksadress.

Du kan ange en anpassad lyssningsadress med hjälp av antingen kod eller konfiguration:

  • I kod anger du en anpassad lyssningsadress genom att lägga till en ClientViaBehavior klass i slutpunktens beteendesamling.

  • I konfigurationen anger du en anpassad lyssningsadress med ListenUri attributet för tjänstslutpunktselementet<>.

Anpassat SOAP-adressfilter

Uri Används tillsammans med alla Headers egenskaper för att definiera en slutpunkts SOAP-adressfilter (AddressFilter). Som standard verifierar det här filtret att ett inkommande meddelande har ett To meddelandehuvud som matchar slutpunktens URI och att alla nödvändiga slutpunktshuvuden finns i meddelandet.

I vissa scenarier tar en slutpunkt emot alla meddelanden som kommer till den underliggande transporten, och inte bara de med rätt To rubrik. För att aktivera detta kan användaren använda MatchAllMessageFilter klassen .

Se även