2017-09-18 17 views
4

En utilisant signalR dans .net 4.7, nous avons pu transmettre deux variables de l'application client au serveur signalR. Voici l'extrait de code:Comment transmettre certaines données via l'en-tête signalR ou la chaîne de requête dans l'application .net core 2.0

public class MyHub : Hub 
{ 
    protected (string myVar1, string myVar2) GetValues() => 
      (
      Context.QueryString["MyVariable1"] ?? string.Empty, 
      Context.QueryString["MyVariable2"] ?? string.Empty, 
      ); 
} 

Le client javascript fixerait ces variables comme suit:

$.connection.hub.qs = {'MyVariable1' : 'val1', 'MyVariable2' : 'val2'}; 

Maintenant, nous essayons de migrer vers la version alpha de signalR pour les applications de base .net 2.0. Le bloqueur est que nous ne pouvons plus utiliser cette méthode pour obtenir les valeurs myVar1 et myVar2. QueryString n'est pas seulement disponible, mais aussi les en-têtes. Quelle est la meilleure façon de surmonter cette situation pour être en mesure de passer des variables de l'application cliente (Typescript) ou même l'application de base de .net au côté du serveur signalR? Aussi - comment définissez-vous les variables du côté client?

Répondre

8

Vous pouvez accéder à la HttpContext dans votre centre comme celui-ci:

var httpContext = Context.Connection.GetHttpContext(); 

puis utilisez httpContext.Request.Query["MyVariable"] pour obtenir la valeur de la variable

+0

Note aux autres: il est une méthode d'extension de sorte que vous ne le verrez pas répertorié jusqu'à ce que vous incluiez l'espace de noms Microsoft.AspNetCore.SignalR. –

+0

Salut, pourriez-vous donner un exemple pour insérer le paramètre en relation avec C#? J'utilise HubConnectionBuilder pour créer et démarrer ma connexion. –

+0

Juste ajouter le paramètre à la chaîne de requête que vous passez pour démarrer la connexion? – Pawel