Hledáme nového kolegu do redakce - 100% home office, 100% flexibilní pracovní doba. Více informací.
Avatar
Michal Pflegshörl:13. července 10:22

Potřebuji aby každý client (Pc) měl vlastní nastavení webové aplikace běžící na serveru v lokální síti

Zkusil jsem: Při vývoji jsem použil

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
        services.AddSingleton<Inastaveni, nastaveni>();
}

Controller

public class HomeController : Controller
    {
        private readonly Inastaveni NacteneNastaveni;

        public HomeController(Inastaveni Nastaveni)
        {
            this.NacteneNastaveni= Nastaveni;
        }

        public IActionResult Index()
        {
                NacteneNastaveni.Neco = "Něco";

                return View(NacteneNastaveni);
        }
}

Chci docílit: Při vývoji to fungovalo bezvadně. HomeController nastavil hodnoty nastavení, které se poté vstřikovaly do dalších controllerů.
Při testování server-client se ale každému clientovi do controllerů vstřikuje stejné nastavení. Já potřebuji aby se každému clientovi nastavily vlastní hodnoty nastavení a ty se mu poté vstřikovaly do controllerů.

 
Odpovědět
13. července 10:22
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Patrik Řepa
Člen
Avatar
Patrik Řepa:13. července 21:39

Ahoj, jak už název sám napovídá, AddSingleton udělá to, že zaregistruje jednu jedinou instanci a tuto instanci injectuje všude, kde je vyžadována.

services.AddSingleton<Inastaveni, nastaveni>();

Místo singleton raději použij

services.AddTransient<Inastaveni, nastaveni>();

Ale ani to nevyřeší tvůj problém. Zde ti kolegové správně napovídali využít Session. Každý klient dostane vlastní session a ty poté můžeš získat ze session nastavení klienta.

Tady je jednoduchá ukázka využití, kde si předává objekt mezi actions. Odkaz

Popřípadě si ukládat nastavení klienta do databáze. Záleží kde všude to nastavení využíváš, jestli ho potřebuješ v každém controlleru a action atd atd.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět
13. července 21:39
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.