Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Windows Communication Foundation (WCF) lehetővé teszi a fejlesztők számára, hogy konfigurációs fájlok vagy kódok használatával konfigurálják a szolgáltatásokat. A konfigurációs fájlok akkor hasznosak, ha a szolgáltatást az üzembe helyezés után konfigurálni kell. Konfigurációs fájlok használatakor egy informatikai szakembernek csak frissítenie kell a konfigurációs fájlt, nincs szükség újrafordításra. A konfigurációs fájlok azonban összetettek és nehezen karbantarthatók. A konfigurációs fájlok hibakeresése nem támogatott, és a konfigurációs elemekre olyan nevek hivatkoznak, amelyek hibalehetőséget és nehézséget okoznak a konfigurációs fájlok készítésében. A WCF lehetővé teszi a szolgáltatások kódban való konfigurálását is. A WCF korábbi (4.0-s és korábbi) verzióiban a szolgáltatások kódban való konfigurálása egyszerű volt a saját üzemeltetésű forgatókönyvekben, az ServiceHost osztály lehetővé tette végpontok és viselkedések konfigurálását a ServiceHost.Open meghívása előtt. A webes üzemeltetésű forgatókönyvekben azonban nem rendelkezik közvetlen hozzáféréssel az ServiceHost osztályhoz. A webszolgáltatás konfigurálásához létre kellett hoznia egy System.ServiceModel.ServiceHostFactory, amely létrehozta a ServiceHostFactory-t, és elvégezte a szükséges konfigurációt. A .NET-KERETRENDSZER 4.5-től kezdve a WCF egyszerűbb módot kínál a saját üzemeltetésű és a webes szolgáltatások kódban való konfigurálására.
A Konfigurálás metódus
Egyszerűen definiáljon egy nyilvános statikus metódust Configure névvel és a következő szignatúrával a szolgáltatás implementálási osztályában:
public static void Configure(ServiceConfiguration config)
A Konfigurálás metódus olyan példányt ServiceConfiguration használ, amely lehetővé teszi a fejlesztő számára végpontok és viselkedések hozzáadását. Ezt a metódust a WCF hívja meg a szolgáltatásgazda megnyitása előtt. Ha meg van adva, a rendszer figyelmen kívül hagyja az app.config vagy web.config fájlban megadott szolgáltatáskonfigurációs beállításokat.
Az alábbi kódrészlet bemutatja, hogyan definiálhatja a Configure metódust, és hogyan adhat hozzá szolgáltatásvégpontot, végponti viselkedést és szolgáltatásviselkedést:
public class Service1 : IService1
{
public static void Configure(ServiceConfiguration config)
{
ServiceEndpoint se = new ServiceEndpoint(new ContractDescription("IService1"), new BasicHttpBinding(), new EndpointAddress("basic"));
se.Behaviors.Add(new MyEndpointBehavior());
config.AddServiceEndpoint(se);
config.Description.Behaviors.Add(new ServiceMetadataBehavior { HttpGetEnabled = true });
config.Description.Behaviors.Add(new ServiceDebugBehavior { IncludeExceptionDetailInFaults = true });
}
public string GetData(int value)
{
return $"You entered: {value}";
}
public CompositeType GetDataUsingDataContract(CompositeType composite)
{
if (composite == null)
{
throw new ArgumentNullException("composite");
}
if (composite.BoolValue)
{
composite.StringValue += "Suffix";
}
return composite;
}
}
Ha engedélyezni szeretne egy olyan protokollt, mint például a https egy szolgáltatáshoz, explicit módon hozzáadhat egy végpontot, amely a protokollt használja, vagy automatikusan hozzáadhat végpontokat a ServiceConfiguration.EnableProtocol(Binding) meghívásával, amely végpontot ad hozzá a protokollal kompatibilis minden alapcímhez és minden meghatározott szolgáltatási szerződéshez. Az alábbi kód a ServiceConfiguration.EnableProtocol metódus használatát mutatja be:
public class Service1 : IService1
{
public string GetData(int value);
public static void Configure(ServiceConfiguration config)
{
// Enable "Add Service Reference" support
config.Description.Behaviors.Add( new ServiceMetadataBehavior { HttpGetEnabled = true });
// set up support for http, https, net.tcp, net.pipe
config.EnableProtocol(new BasicHttpBinding());
config.EnableProtocol(new BasicHttpsBinding());
config.EnableProtocol(new NetTcpBinding());
config.EnableProtocol(new NetNamedPipeBinding());
// add an extra BasicHttpBinding endpoint at http:///basic
config.AddServiceEndpoint(typeof(IService1), new BasicHttpBinding(),"basic");
}
}
A <protocolMappings> szakasz beállításai csak akkor használatosak, ha programozott módon nem adnak hozzá ServiceConfiguration alkalmazásvégpontokat. A szolgáltatás konfigurációját igénybe vehetik az alapértelmezett alkalmazáskonfigurációs fájlból a LoadFromConfiguration hívással, majd módosíthatja a beállításokat. Az LoadFromConfiguration() osztály lehetővé teszi a konfiguráció központosított konfigurációból való betöltését is. Az alábbi kód bemutatja, hogyan implementálhatja ezt:
public class Service1 : IService1
{
public void DoWork();
public static void Configure(ServiceConfiguration config)
{
config.LoadFromConfiguration(ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap { ExeConfigFilename = @"c:\sharedConfig\MyConfig.config" }, ConfigurationUserLevel.None));
}
}
Fontos
Vegye figyelembe, hogy LoadFromConfiguration figyelmen kívül hagyja <host> a beállításokat a <service> címke alatt <system.serviceModel>. Elméletileg, <host> a gazdagép konfigurációjáról szól, nem a szolgáltatás konfigurációjáról, és még azelőtt betöltődik, hogy a Konfigurálás metódust végrehajtanák.
Lásd még
- Szolgáltatások konfigurálása konfigurációs fájlok használatával
- Ügyfél viselkedésének konfigurálása
- Egyszerűsített konfiguráció
- Konfiguráció
- Konfigurációalapú aktiválás az IIS-ben és a WAS-ban
- Konfiguráció és metaadatok támogatása
- Konfiguráció
- Útmutató: Szolgáltatáskötés megadása a konfigurációban
- Útmutató: Szolgáltatásvégpont létrehozása a konfigurációban
- Útmutató: Metaadatok közzététele szolgáltatáshoz konfigurációs fájl használatával
- Útmutató: Ügyfélkötés megadása a konfigurációban