private static async Task <ISiloHost> StartSilo() { // define the cluster configuration var builder = new SiloHostBuilder() .UseDashboard(options => { options.Port = 8099; }) .UseLocalhostClustering() .Configure <ClusterOptions>(options => { options.ClusterId = "dev"; options.ServiceId = "HelloWorldApp"; }) .ConfigureServices(services => { services .AddLogging() .AddTransient <VisitTracker>(); }) .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(VisitTracker).Assembly).WithReferences()) .Configure <EndpointOptions>(options => options.AdvertisedIPAddress = IPAddress.Loopback) //.ConfigureLogging(logging => //{ // logging.AddConsole(); // logging.AddDebug(); //}) ; //builder.AddMemoryGrainStorage(MyDefineConstants.MemoryProviderName); builder.AddCosmosDBGrainStorageAsDefault(options => { options.AccountEndpoint = @"https://*****:*****@"C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="; options.DB = "orleans-persist"; options.Collection = @"orleans_data"; //reset Cosmos DB on silo start options.DropDatabaseOnInit = false; //be sure to add this because Grains' CRUD is base on store procedure. options.AutoUpdateStoredProcedures = true; options.CanCreateResources = true; options.DeleteStateOnClear = true; }); var host = builder.Build(); await host.StartAsync(); return(host); }