IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Asp Net et IHostBuilder [Débutant]


Sujet :

ASP.NET

  1. #1
    Membre expérimenté
    Homme Profil pro
    Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique
    Inscrit en
    Décembre 2014
    Messages
    457
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 457
    Par défaut Asp Net et IHostBuilder
    Bonjour à tous,

    Je découvre .Net Core après avoir fait en c# que du .Framework, n'ayant jamais eu besoin d'utiliser asp.net avant je ne commence pas de la meilleure manière et je suis pas mal largué, je cherche à implanter un serveur gRPC à une solution déjà existante, je commence petit à petit à réussir mais sincèrement c'est au niveau de IHostBuilder et de iWebHostBuilder que je pagaye.

    Je voulais savoir si vous les utilisiez tous ou si finalement c'était mis de côté. J'ai l'impression de programmer à l'envers en fait avec ça, j'arrive pas à récupérer correctement et à chaque fois mes variables, par exemple là je me retrouve à devoir faire une propriété static pour le Startup si je veux récupérer mes bindings et les afficher dans une console. alors certes ça peut logger, j'ai trouvé comment faire, etc etc... Mais je voulais faire un test pour voir le contrôle que je peux avoir sur les éléments du serveur et je m'arrache les cheveux. J'ai adoré par exemple l'exemple qu'on trouve sur la page de MS qui explique comment afficher les ports, sauf que c'est sur la page qu'on affiche une fois qu'on est déjà connecté ce qui est d'une remarquable inutilité surtout que l'exemple pris est fait avec un port 0 => donc aléatoire.

    Je pense avoir compris (et je ne le fais pas) que beaucoup de choses se jouent dans Startup, d'où le fait d'avoir récupéré par une propriété static, mais à moins de passer par un délégué du genre (objet, trucquejevaisrécup) je ne vois pas comment récupérer l'objet startup initialisé qui semble avoir pas mal de données, ni le serveur.

    Si quelqu'un à des ressources, des infos à me donner, parce que j'ai un peu lu de tout et beaucoup qui ne marchait pas en fait sur StackOverFlow.

    Merci par avance.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Si je comprends bien, tu n'arrives pas a recuperer tes configurations la ou tu en as besoin. Merci de me corriger si ca n'est pas l'objet de ta demande !

    Tout se fait par injection de dependence.

    Le fichier appsettings.json :
    Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {
      "TestSection": {
        "PropertyA": "Value A"
      }
    }

    Le fichier Startup :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public class Startup
    {
    	public Startup(IConfiguration configuration)
    	{
    		Configuration = configuration;
    	}
     
    	public IConfiguration Configuration { get; }
     
    	// This method gets called by the runtime. Use this method to add services to the container.
    	public void ConfigureServices(IServiceCollection services)
    	{
    		services.Configure<CookiePolicyOptions>(options =>
    		{
    			// This lambda determines whether user consent for non-essential cookies is needed for a given request.
    			options.CheckConsentNeeded = context => true;
    			options.MinimumSameSitePolicy = SameSiteMode.None;
    		});
     
     
    		services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
     
    		services.Configure<TestSection>(Configuration.GetSection("TestSection"));
    	}
     
    	// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    	public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    	{
    		...
    	}
    }

    Et ton controller :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class HomeController : Controller
    {
    	private readonly IOptions<TestSection> _config;
     
    	public HomeController(IOptions<TestSection> config)
    	{
    		this._config = config;
    	}
     
    	public IActionResult Index()
    	{
    		// On recupere le contenu de PropertyA
    		var test = this._config.Value.PropertyA;
     
    		return View();
    	}
    }

    Apres pour gRPC il y a toute une section dediee sur la doc de Microsoft : https://docs.microsoft.com/en-us/asp...aspnetcore-3.1

    Important a noter, IIS et Azure App Service ne supportent pas gRPC pour le moment ! Tu peux utiliser NGINX comme reverse proxy a la place.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique
    Inscrit en
    Décembre 2014
    Messages
    457
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur Systèmes, Clouds et Réseaux /CAO/DAO/Ingénierie Electrotechnique

    Informations forums :
    Inscription : Décembre 2014
    Messages : 457
    Par défaut
    Salut, merci de m'aider.

    Donc comme expliqué je cherche à implanter un serveur gRPC sur une solution que j'avais déjà bien avancé (qui tourne sur mes pcs), chose que j'ai oublié de préciser c'est un serveur wcf qui gère ça sur l'ancienne version en .Framework et il n'est pas la priorité si pour une raison x ou y il plante mon appli continue car elle doit surveiller des dossiers et fichiers. Donc je comptais faire de même avec le serveur gRPC (ce n'est pas spécifiquement mon choix, j'ai lu sur stackoverflow qu'on conseillait à chaque fois celà dès qu'il s'agissait de faire une application splittée en deux) . Mon but c'est de faire un serveur en localhost pour configurer, recevoir des infos. Et selon de faire aussi une écoute sur des ips locales (je compte l'installer sur un nas fait maison, si je pouvais avoir l'ihm séparée qui tourne sur mon pc ça m'arrangerait) .

    De fait je ne suis pas passé par la création classique d'un serveur gRPC, sous visual studio, qui fait tout. Je n'ai apparemment pas de fichier json, je paramètre directement en code c# (code de mon application).
    Je n'ai rien implanté pour le moment tant que je ne suis pas sûr, je fais des essais à côté avant.

    Un des exemples de code fait en fouinant à droite et à gauche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
                Action<IWebHostBuilder> iWebHostBuilder = o =>
                {
                    o
     
                    .ConfigureLogging(logging =>
                     {
                         logging.AddFilter("Grpc", LogLevel.Debug);
                         logging.AddConsole();
                     })
                    .ConfigureKestrel
                    (options =>
                    {
                        options.Listen(IPAddress.Any, 0, listenOptions =>
                        {
                            listenOptions.Protocols = HttpProtocols.Http1;
                            listenOptions.UseHttps();
     
                            // Pour fournir un certificat précis
                            /*listenOptions.UseHttps("<path to .pfx file>",
                                "<certificate password>");*/ 
                        });
                    })
     
                    .UseStartup<Startup>();
                    ;
                    //dd = o.Build(); // ne fonctionne pas.
                };
     
     
                            IHostBuilder hostBuilder = new HostBuilder();
                hostBuilder.ConfigureWebHostDefaults(iWebHostBuilder);


    Pour la doc MS je suis dessus depuis deux jours, ça se borne pas mal à comment créer un serveur avec visual studio et articuler tout autour et surtout ça utilise ces interfaces "d'abstraction", et ce sont ces interfaces qui me compliquent la tâche pour le moment pour récupérer ce dont j'ai besoin. J'ai compris que l'élément central était le startup, donc je vais peut être voir pour créer un startup pour chaque "serveur" avec une propriété statique. Pour dire, l'exemple que donne la documentation MS pour avoir des infos à mettre dans app.Run():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    await context.Response.WriteAsync(">>>>>>>>>>>> <p>Listening on the following addresses: " +
                                                string.Join(", ", serverAddressesFeature.Addresses) +
                                                "</p>");
    Alors que ça va l'afficher sur une page web quand on se connecte, logiquement si on est connecté l'essentiel du boulot est déjà fait, ce n'est pas à ce moment que j'ai besoin de telles infos.

    ...........

    Bon, j'ai testé encore ce matin de ne lancer qu'en ligne de code c# et j'abandonne sur ce point c'est un parcours du combattant dès que j'essaie de ne plus utiliser un builder, je vais voir du côté du startup je sens que je vais passer par une ou des propriétés et méthodes statiques c'est le seul endroit où j'arrive à peu près à avoir des éléments... ne serait ce que de lancer un KestrelServer ça devient vite la prise de tête par absence de code source et de doc pour voir là où ça pose soucis.

    Pour le controller je ne suis pas sous mvc et apparemment c'est pour asp.net mvc d'après mes recherches, à moins que je ne me trompe.

    J'ai peut être oublié de le dire mais ce n'est pas une appli web, c'est un service qui ne doit jamais stopper, le fait de pouvoir aussi se connecter à ce service pour aider au paramétrage ou avoir des informations est secondaire.

    Merci de m'aider en tout cas.

    Edit2:

    J'ai reconsidéré ma manière de voir gRPC, surtout asp.net en fait, donc c'était normal que je n'y arrive pas, il n'y a pas vraiment de réponse adaptée juste à faire autrement (et surtout à se faire à cette idée);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Choisir PHP ou ASP.NET ?
    Par discogarden dans le forum Général Conception Web
    Réponses: 81
    Dernier message: 31/12/2009, 18h11
  2. [CR][ASP.NET] Impression en format "paysage"
    Par David.V dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 24/04/2004, 22h56
  3. [CR][ASP.NET] Problème d'affichage du rapport
    Par David.V dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 20/04/2004, 12h39
  4. [CR][ASP.NET] Un champ avec plusieurs polices...
    Par David.V dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 08/04/2004, 14h19
  5. Driver postgre pour asp.net
    Par vonbier dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 02/10/2003, 13h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo