示例#1
0
        public void OnOneThread()
        {
            var container = new EnvironmentObjectContainer();

            var obj1 = Guid.NewGuid();

            container.Set("test", obj1);
            var obj2 = container.Get("test");

            Assert.That(obj2, Is.Not.Null);
            Assert.That(obj1, Is.EqualTo(obj2));
        }
示例#2
0
        public static string IpAddress(this object source)
        {
            var hostname = Dns.GetHostName();

            if (!string.IsNullOrEmpty(hostname))
            {
                var ips     = Dns.GetHostAddresses(hostname);
                var ipFirst = ips.FirstOrDefault(i => i.AddressFamily == AddressFamily.InterNetwork);

                if (ipFirst != null)
                {
                    return(ipFirst.ToString());
                }
            }

            if (ObjectContainer.Get(IpAddressKey) != null)
            {
                return(ObjectContainer.Get(IpAddressKey) as string);
            }
            if (HttpContext.Current != null)
            {
                return(HttpContext.Current.Request.UserHostAddress);
            }

            var context = OperationContext.Current;

            if (context != null)
            {
                var prop = context.IncomingMessageProperties;
                if (prop != null)
                {
                    var endpoint = prop[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
                    if (endpoint != null)
                    {
                        return(endpoint.Address);
                    }
                }
            }
            return("");
        }