Quel est le meilleur moyen pour être averti quand un service WCF est commencé?
Est-il quelque chose de similaire à la méthode Application_Start dans le monde.asax pour un ASP.NET application?
Quel est le meilleur moyen pour être averti quand un service WCF est commencé?
Est-il quelque chose de similaire à la méthode Application_Start dans le monde.asax pour un ASP.NET application?
J'ai utilisé ce lien, il y a plusieurs solutions: http://blogs.msdn.com/b/wenlong/archive/2006/01/11/511514.aspx
Vous pouvez toujours ajouter manuellement mondiale.asax fichiers à votre Service WCF Application hébergée sur IIS et s'intègre avec les ASP.NET pipeline:
<%@ Application Codebehind="Global.asax.cs" Inherits="WcfApplication" Language="C#" %>
public class WcfApplication : HttpApplication
{
protected void Application_Start()
{
}
}
Eh bien, ce peut être un peu délicate, car le moyen privilégié pour appeler des services WCF est "par téléphone", par exemple vous n'avez pas vraiment tout ce qui est "en route" et puis se bloque autour, vraiment.
Si vous organisez votre service dans IIS ou a ÉTÉ, il est même "chargement à la demande" de votre service d'accueil - lorsqu'un message arrive, l'hôte est instancié et traite la demande.
Si vous auto-héberger, soit vous avez une console ou Winforms app - de sorte que vous pourriez crochet de là à savoir quand ils commencent. Si vous avez un Windows et le service de votre service d'accueil, vous avez probablement remplacer le Démarrage et OnStop des méthodes de la classe ServiceBase --> crochet en il.
La question est plus: qu'est-ce exactement que vous voulez accomplir? Juste à l'exploitation forestière ou quelque chose comme ça, ou voulez-vous avoir quelque chose de construit en mémoire afin de rester dans les parages??
Marc
Si vous avez un Auto-Hébergé Service WCF, vous pouvez ajouter un Événement à l'Ouverture du service, et à l'intérieur de cet Événement, vous pouvez affecter une variable statique, tout comme ce post:
//Static Variables in a WCF Service
public class Post2331848
{
[ServiceContract]
public interface ITest
{
[OperationContract]
string GetString();
}
public class Service : ITest
{
public static string TheString;
public string GetString()
{
return TheString;
}
}
static void host_Opening(object sender, EventArgs e)
{
Service.TheString = "This is the original string";
}
public static void Test()
{
string baseAddress = "http://" + Environment.MachineName + ":8000/Service";
ServiceHost host = new ServiceHost(typeof(Service), new Uri(baseAddress));
ServiceEndpoint endpoint = host.AddServiceEndpoint(typeof(ITest), new BasicHttpBinding(), "");
//This is the magic line!
host.Opening += new EventHandler(host_Opening);
host.Open();
Console.WriteLine("Host opened");
Console.ReadLine();
host.Close();
}
}
(Originaire de http://www.eggheadcafe.com/community/aspnet/18/10162637/help-in-maintain-global-variable-in-wcf.aspx)
Bonne Chance!
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.