private static void Main(string[] args) { //MonitorTest test = new MonitorTest("test"); //test.MyMutex.WaitOne(); //Console.Write("测试"); //Console.ReadLine(); ContainerBuilder containerBuilder = new ContainerBuilder(); IServiceHostServerBuilder builder = new ServiceHostServerBuilder(containerBuilder) .LoadServices("Lamp.Service.Test") .UseRpcForTransfer(8007) .UseConsulCheckHealth(new RegisterServer("127.0.0.1", 8500)) .UseValidation() .UseJwtForOAuth(new JwtAuthorizationOptions { ServerIp = "127.0.0.1", ServerPort = 8007, SecretKey = "test", ExpireTimeSpan = new TimeSpan(1, 0, 0), TokenEndpointPath = "/base/token", ValidateLifetime = true, CheckCredential = o => { if (o.UserName == "admin" && o.Password == "admin") { o.AddClaim("department", "IT部"); } else { o.Rejected("401", "acount or password incorrect"); } } }); //.UseInServerForDiscovery(); try { using (Core.IServiceHost host = builder.Build()) { host.Run(); Console.ReadLine(); } } catch (Exception e) { Console.Write(e); Console.ReadLine(); } }
/// <summary> /// 服务内部调用方法 /// </summary> /// <param name="serverAddress">服务地址</param> /// <param name="sendMessage">请求内容</param> public static async Task <T> InternalCall <T>(List <ServerAddress> service, RemoteCallData sendMessage) { ContainerBuilder containerBuilder = new ContainerBuilder(); Core.Client.IServiceHostClientBuilder builder = new ServiceHostClientBuilder(containerBuilder).UseRpcForTransfer() .UsePollingAddressSelector(BalanceType.RoundRobin); using (Core.IServiceHost host = builder.Build()) { IAddressSelector addressSelector = host.Container.Resolve <IAddressSelector>(); ServerAddress desc = await addressSelector.GetAddressAsync(service); ITransportClient client = host.Container.Resolve <ITransportClientFactory>() .CreateClient(desc); RemoteCallBackData result = client.SendAsync(sendMessage).Result; return(JsonConvert.DeserializeObject <T>(result.Result.ToString())); } }
//public static Mutex mutex = new Mutex(); private static void Main(string[] args) { //MonitorTest test = new MonitorTest("test1"); //test.MyMutex.WaitOne(); //Console.Write(AppDomain.CurrentDomain.BaseDirectory); //Console.ReadLine(); ContainerBuilder containerBuilder = new ContainerBuilder(); IServiceHostServerBuilder builder = new ServiceHostServerBuilder(containerBuilder) .LoadServices("Lamp.Service.Test", "Lamp.Service.Test1") .UseRpcForTransfer(8008) .UseConsulCheckHealth(new RegisterServer("127.0.0.1", 8500)) .LoadConifg("appsettings.json").UseValidation(); //.UseInServerForDiscovery(); using (Core.IServiceHost host = builder.Build()) { host.Run(); Console.ReadLine(); } }