Bonjour à tous,

J'utilise le membership aspnet pour mon appli, et il arrive parfois que la création d'un User ne fonctionne car par exemple, son mot de passe est trop court ou alors le nom d'utilisateur est déja utilisé. Je doit donc gérer les différentes exceptions. Je procède comme ça :

Coté client je fais mon appel comme ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 DBContext.CreateUser(Tb_UserName.Text, Pb_Password.Password, Tb_Email.Text,
           _invokeOperation =>
                            {
                                if (!_invokeOperation.HasError)
                                {
                                    this.DialogResult = true;
                                }
                                else
                                {
                                    _invokeOperation.MarkErrorAsHandled();
                                    ErrorChildWindow _errorWindow = new ErrorChildWindow(_invokeOperation.Error.Message);
                                }
                            }
                            , null);
Et coté serveur mon User est créé comme ça :

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
[Invoke]
        public void CreateUser(string _name, string _password, string _email)
        {
            var _membershipCreateStatus = new MembershipCreateStatus();
            MembershipUser _newMembership = Membership.CreateUser(_name, _password, _email, "There no retrival password possibilities", "So there is no answer to this question", true, out _membershipCreateStatus);
            if (_newMembership != null)
            {
                this.DataContext.SaveChanges();
            }
            else
            {
                throw new Exception(GetErrorMessage(_membershipCreateStatus));
            }
        }
 
 
        private string GetErrorMessage(MembershipCreateStatus status)
        {
            switch (status)
            {
                case MembershipCreateStatus.DuplicateUserName:
                    return "Username already exists. Please enter a different user name.";
 
                case MembershipCreateStatus.DuplicateEmail:
                    return "A username for that e-mail address already exists. Please enter a different e-mail address.";
 
                case MembershipCreateStatus.InvalidPassword:
                    return "The password provided is invalid. Please enter a valid password value.";
 
                case MembershipCreateStatus.InvalidEmail:
                    return "The e-mail address provided is invalid. Please check the value and try again.";
 
                case MembershipCreateStatus.InvalidAnswer:
                    return "The password retrieval answer provided is invalid. Please check the value and try again.";
 
                case MembershipCreateStatus.InvalidQuestion:
                    return "The password retrieval question provided is invalid. Please check the value and try again.";
 
                case MembershipCreateStatus.InvalidUserName:
                    return "The user name provided is invalid. Please check the value and try again.";
 
                case MembershipCreateStatus.ProviderError:
                    return "The authentication provider returned an error. Please verify your entry and try again. If the problem persists, please contact your system administrator.";
 
                case MembershipCreateStatus.UserRejected:
                    return "The user creation request has been canceled. Please verify your entry and try again. If the problem persists, please contact your system administrator.";
 
                default:
                    return "An unknown error occurred. Please verify your entry and try again. If the problem persists, please contact your system administrator.";
            }
        }
Quand j’exécute mon appli avec Visual Studio (en localhost) mon erreur est bien ramener au client via le "_invokeOperation.Error.Message" par contre quand mon application est sur mon serveur (donc plus en localhost) je n'ai plus qu'un message basique qui du coup ne me détail plus à mon client le pourquoi de l'erreur :/

Y'a t-il quelque chose à faire pour l'erreur soit bien retourner au client de la même manière qu'en localhost ??

Merci d'avance !