Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Asp.net core 3.0] déployer app

Sujet résolu
    28 mars 2020 à 13:39:48

    Salut,

    j'ai actuellement réalisé une petite application avec asp.net core 3.0 et Angular, et j'aimerai la mettre en ligne. Le truc c'est que je ne sais pas où la déployer, de façon gratuite pour faire des tests tout ça. Quelqu'un à des idées ? Des tutos ou infos ?

    J'ai essayé avec azure mais il y a un bug en ce moment qui empêche d'utiliser un server sqlite donc pas possible pour l'instant :( j'ai pensé essayer sur Heroku mais je galère, j'ai essayé avec un build pack compatible mais je dois pas bien m'y prendre ^^

    Merci pour vos retours :)

    • Partager sur Facebook
    • Partager sur Twitter
      28 mars 2020 à 23:33:09

      Salut,

      De façon gratuite a part faire de l''auto hébergement je ne vois pas trop. Si tu as un pc en rab, ou un raspberry pi ou alors une machine virtuelle , tu peux déployer ton api dessus. J'ai un raspberry qui me sert exclusivement a ça .

      Après tu peux aussi louer un VPS . Chez OVH tu en as un pour moins de 5 euros par mois et c'est suffisant pour faire des tests.

      • Partager sur Facebook
      • Partager sur Twitter
        29 mars 2020 à 0:01:35

        Hey, j’ai vu qu’on pouvait déployer sur heroku avec simplement un compte gratuit,  n utilisant un build pack, mais je suis vraiment pas doué en deployment.. sinon j’ai essayé pivotal ça a l’air de devoir fonctionner aussi mais quand j’ai fait le deployment ça n’a pas bien fonctionné non plus, le problème c’est qu’il n’y a pas vraiment de tuto, j’en ai suivi un à la lettre pour pivotal mais quand je vais sur l’adesse url le site est bien hébergé mais mon api ne démarre pas, je suis obligé de la lancer en local pour que ça fonctionne, il doit y avoir un truc à faire je pense mais aucune idée de quoi faire

        https://datingapp-responsible-bushbuck-pp.cfapps.io/

        -
        Edité par AlexisMoren 29 mars 2020 à 1:05:06

        • Partager sur Facebook
        • Partager sur Twitter
          29 mars 2020 à 11:26:29

          Je ne connais pas du tout ces solutions la. Je ne suis pas fan du "gratuit" car quand c'est gratuit, c'est toi le produit. 

          Et tu sur qu'ils ne peuvent pas accéder à tes données?

          • Partager sur Facebook
          • Partager sur Twitter
            29 mars 2020 à 15:55:15

            J'ai trouvé le problème enfaite ça prenait l'environnent dev et non prod, là c'est bon, mais j'ai des erreurs avec mysql quand j'essaye de me connecter, l'inscription fonctionne mais pas la connexion c'est pratique x)

            https://datingapp-zany-oribi-yc.cfapps.io/

            • Partager sur Facebook
            • Partager sur Twitter
              29 mars 2020 à 16:20:15

              D'accord poste ton code pour la connexion pour voir ?
              • Partager sur Facebook
              • Partager sur Twitter
                29 mars 2020 à 20:41:23

                User controller :

                using System;
                using System.Collections.Generic;
                using System.Security.Claims;
                using System.Threading.Tasks;
                using AutoMapper;
                using DatingApp.API.Data;
                using DatingApp.API.Dtos;
                using DatingApp.API.Helpers;
                using DatingApp.API.Models;
                using Microsoft.AspNetCore.Authorization;
                using Microsoft.AspNetCore.Mvc;
                
                namespace DatingApp.API.Controllers
                {
                    [ServiceFilter(typeof(LogUserActivity))]
                    [Route("api/[controller]")]
                    [ApiController]
                    public class UsersController : ControllerBase
                    {
                        private readonly IDatingRepository _repo;
                        private readonly IMapper _mapper;
                        public UsersController(IDatingRepository repo, IMapper mapper)
                        {
                            _mapper = mapper;
                            _repo = repo;
                        }
                
                        [HttpGet]
                        public async Task<IActionResult> GetUsers([FromQuery]UserParams userParams)
                        {
                            var currentUserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);
                
                            var userFromRepo = await _repo.GetUser(currentUserId, true);
                
                            userParams.UserId = currentUserId;
                
                            if (string.IsNullOrEmpty(userParams.Gender))
                            {
                                userParams.Gender = userFromRepo.Gender == "male" ? "female" : "male";
                            }
                
                            var users = await _repo.GetUsers(userParams);
                
                            var usersToReturn = _mapper.Map<IEnumerable<UserForListDto>>(users);
                
                            Response.AddPagination(users.CurrentPage, users.PageSize,
                                 users.TotalCount, users.TotalPages);
                
                            return Ok(usersToReturn);
                        }
                
                        [HttpGet("{id}", Name = "GetUser")]
                        public async Task<IActionResult> GetUser(int id)
                        {
                            var isCurrentUser = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value) == id;
                
                            var user = await _repo.GetUser(id, isCurrentUser);
                
                            var userToReturn = _mapper.Map<UserForDetailedDto>(user);
                
                            return Ok(userToReturn);
                        }
                
                        [HttpPut("{id}")]
                        public async Task<IActionResult> UpdateUser(int id, UserForUpdateDto userForUpdateDto)
                        {
                            if (id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
                                return Unauthorized();
                
                            var userFromRepo = await _repo.GetUser(id, true);
                
                            _mapper.Map(userForUpdateDto, userFromRepo);
                
                            if (await _repo.SaveAll())
                                return NoContent();
                
                            throw new Exception($"Updating user {id} failed on save");
                        }
                
                        [HttpPost("{id}/like/{recipientId}")]
                         public async Task<IActionResult> LikeUser(int id, int recipientId)
                         {
                             if (id != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
                                 return Unauthorized();
                
                              var like = await _repo.GetLike(id, recipientId);
                
                              if (like != null)
                                 return BadRequest("You already like this user");
                
                              if (await _repo.GetUser(recipientId, false) == null)
                                 return NotFound();
                
                              like = new Like
                             {
                                 LikerId = id,
                                 LikeeId = recipientId
                             };
                
                              _repo.Add<Like>(like);
                
                              if (await _repo.SaveAll())
                                 return Ok();
                
                              return BadRequest("Failed to like user");
                         }
                    }
                }

                UserForLoginDto :

                namespace DatingApp.API.Dtos
                {
                    public class UserForLoginDto
                    {
                        public string Username { get; set; }
                        public string Password { get; set; }
                    }
                }

                Model User :

                using System;
                using System.Collections.Generic;
                using Microsoft.AspNetCore.Identity;
                
                namespace DatingApp.API.Models
                {
                    public class User : IdentityUser<int>
                    {
                        public string Gender { get; set; }
                        public DateTime DateOfBirth { get; set; }
                        public string KnownAs { get; set; }
                        public DateTime Created { get; set; }
                        public DateTime LastActive { get; set; }
                        public string Introduction { get; set; }
                        public string LookingFor { get; set; }
                        public string Interests { get; set; }
                        public string City { get; set; }
                        public string Country { get; set; }
                        public virtual ICollection<Photo> Photos { get; set; }
                        public virtual ICollection<Like> Likers { get; set; }
                        public virtual ICollection<Like> Likees { get; set; }
                        public virtual ICollection<Message> MessagesSent { get; set; }
                        public virtual ICollection<Message> MessagesReceived { get; set; }
                        public virtual ICollection<UserRole> UserRoles { get; set; }
                    }
                }

                erreur à la connexion :

                Unable to cast object of type 'System.String' to type 'System.DateTime'.


                Je pense que s'est le format DateTime qui pose problème, mais il est utilisé sur plusieurs champs alors pourquoi seulement un empêche la connexion après une inscription réussie  x)

                -
                Edité par AlexisMoren 29 mars 2020 à 20:45:14

                • Partager sur Facebook
                • Partager sur Twitter
                  29 mars 2020 à 20:57:58

                  Je veux bien t'aider mais ton dto il sert ou? et c'est sur quel ligne que ça bloque?

                  tu dois avoir une différence de donnee. En général tu peux envoyer un string a une Datetime sur une BDD par contre l'inverse ne marche pas il me semble. Regarde peut etre a ce niveau la.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 mars 2020 à 21:40:42

                    Bah en local tout fonctionne c’est bizarre, je crois que j’utilise pu le dto 🤔 je regarde ça après, l’erreur vient uniquement lors de la connexion d’un utilisateur dans l’application donc je pense que ça vient du controller où des champs du model user 🤔🤔
                    • Partager sur Facebook
                    • Partager sur Twitter
                      29 mars 2020 à 21:50:00

                      C'est surement une histoire de champs qui ne correspond pas. Dis moi quoi ;)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 avril 2020 à 12:31:21

                        Salut, j'ai réussi aufaite, j'ai importé une base sqlite directement comme ça s'est réglé x) si tu veux jeter un oeil :

                        https://datingapp-smart-hartebeest-pl.cfapps.io/

                        Sinon je suis sur un autre problème maintenant, je vais faire un autre topic, c'est pas grand chose mais je suis dessus depuis trois jours x)

                        • Partager sur Facebook
                        • Partager sur Twitter
                          6 avril 2020 à 17:05:18

                          oui enfin c'est bizarre que tu n'arrive pas a régler ca. C'est quoi ton autre problème?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            7 avril 2020 à 11:21:46

                            Bah je pense ça plante quand je fait la migration avec mysql parce que j’ai un prof qui a testé mon code et ça fonctionne bien donc c’est bizarre 🤔, j’ai fait un sujet c’est au sujet d’une requête qui retourne une erreur 500 bien chiante 😂
                            • Partager sur Facebook
                            • Partager sur Twitter

                            [Asp.net core 3.0] déployer app

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown