Je crée une application Web Blazor avec .Net Core et j'essaie d'enregistrer le jeton dans le cookie. Cependant, j'obtiens l'erreur:
Le nom Response n'existe pas dans le contexte actuel
Dans tous les exemples que j'ai vus, les gens ne sont pas confrontés à ce problème. Que dois-je faire?
@functions { async Task Submit() { using (var client = new HttpClient()) { User user = new User(state.user.Username, state.user.Password); var response = await client.PostAsJsonAsync("api/adimin/token", user); var token = await response.Content.ReadAsAsync<string>(); var option = new CookieOptions(); option.Expires = DateTime.Now.AddDays(1); Response.Cookies.Append(setting, token, option); } } }
3 Réponses :
Essayez ceci.
en utilisant system.web
puis écrivez HttpContext.Current.Response
maintenant il dit que 'HttpContext' ne contient pas de définition pour 'Current'
httpcontext est disponible dans .net framework pas dans .net core
Je sais pourquoi Response n'existe pas dans le contexte actuel. En fait, il n'y a pas de contexte actuel ici. Donc pas de réponse ici aussi. Votre "contexte actuel" est ici un composant Blazor: "code derrière".
Permettez-moi de vous recommander de commencer à apprendre Blazor à partir de Microsoft doc, et lorsque vous ne pouvez pas résoudre vos problèmes, venez ici pour obtenir de l'aide. Commencez ici: https://docs.microsoft. com / fr-fr / aspnet / core / blazor /? view = aspnetcore-3.0
J'espère que cela vous aidera ...
Cela a bien fonctionné pour moi: -
Remplacez
la réponse par HttpContext.Current.Response
Avez-vous copié-collé cette erreur? Ou est-ce une faute de frappe dans votre message? réponse! = réponse
désolé, ma faute, c'est arrivé à cause de la précipitation. Il doit y avoir une réponse.
Je ne pense pas que
@functions
existe en C #. Corrigez-moi si j'ai tort, s'il-vous plait.c'est un cadre blazor
Votre exemple de code provient de l'application
blazor
? Si tel est le cas, cela s'exécute dans le navigateur. Si vous devez définir un cookie, je suppose que vous devriez le faire côté serveur ...la réponse n'existe que lorsque vous avez appelé depuis une page, pas depuis une tâche
Peut-être que l'utilisation de "HttpResponse" au lieu de "Response" fonctionnera. source: docs. microsoft.com/en-us/dotnet/api/…
Remarque:
using (var client = new HttpClient ())
est une mauvaise idée dans toutes les éditions de .NET. Utilisez@inject
.