Проверьте InstanceContextMode, используемый службой WCF - PullRequest
1 голос
/ 09 сентября 2011

Есть ли способ проверить, какой InstanceContextMode используется моей службой WCF?

Могу ли я найти / записать это значение в файл svclog?

Спасибо!

1 Ответ

7 голосов
/ 09 сентября 2011

Это не вошли в следы. Но вы можете найти эту информацию во время выполнения (через OperationContext, и зарегистрировать ее где-нибудь самостоятельно.

public class StackOverflow_7360920
{
    [ServiceContract]
    public interface ITest
    {
        [OperationContract]
        int Add(int x, int y);
    }
    //[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
    public class Service : ITest
    {
        public Service()
        {
            Console.WriteLine(OperationContext.Current.Host.Description.Behaviors.Find<ServiceBehaviorAttribute>().InstanceContextMode);
        }
        public int Add(int x, int y)
        {
            return x + y;
        }
    }
    static Binding GetBinding()
    {
        BasicHttpBinding result = new BasicHttpBinding();
        return result;
    }
    public static void Test()
    {
        string baseAddress = "http://" + Environment.MachineName + ":8000/Service";
        ServiceHost host = new ServiceHost(typeof(Service), new Uri(baseAddress));
        host.AddServiceEndpoint(typeof(ITest), GetBinding(), "");
        host.Open();
        Console.WriteLine("Host opened");

        ChannelFactory<ITest> factory = new ChannelFactory<ITest>(GetBinding(), new EndpointAddress(baseAddress));
        ITest proxy = factory.CreateChannel();

        Console.WriteLine(proxy.Add(3, 5));

        ((IClientChannel)proxy).Close();
        factory.Close();

        Console.Write("Press ENTER to close the host");
        Console.ReadLine();
        host.Close();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...