Windows phone 8 远程服务器返回错误:NotFound。只有当我使用错误的凭据时…WP8

Windows phone 8 远程服务器返回错误:NotFound。只有当我使用错误的凭据时…WP8,windows-phone-8,remote-server,classnotfound,webexception,Windows Phone 8,Remote Server,Classnotfound,Webexception,当我尝试连接到服务器时,代码中会发生奇怪的事情。。。 使用授权凭据时,响应返回的状态码为“OK”(我对此很满意),但当我使用未授权凭据登录时,状态码响应应为“unauthorized”,而我得到的是“远程服务器返回了一个错误:找不到”。为什么应用程序会崩溃?我只更改了凭据!感谢您的帮助 //Request public void ConnexionNT(string password,string user) { try {

当我尝试连接到服务器时,代码中会发生奇怪的事情。。。 使用授权凭据时,响应返回的状态码为“OK”(我对此很满意),但当我使用未授权凭据登录时,状态码响应应为“unauthorized”,而我得到的是“远程服务器返回了一个错误:找不到”。为什么应用程序会崩溃?我只更改了凭据!感谢您的帮助

//Request
   public void ConnexionNT(string password,string user)

    { 
        try
        {

            HttpWebRequest request= (HttpWebRequest)HttpWebRequest.Create(URL_CONNEXION);

            request.Method = "GET";

            request.Credentials = new NetworkCredential(user, password, domain);

            request.CookieContainer = _cookiecontainer;

            request.BeginGetResponse(new AsyncCallback(GetResponse),request);

        }

        catch(HttpRequestException)
        {
            MessageBox.Show("Un problème de connexion avec  le serveur a eu lieu.", "Echec Authentification", MessageBoxButton.OK);
        }
        catch (Exception )
        {
            MessageBox.Show("Une erreur a eu lieu","Echec Authentification", MessageBoxButton.OK);
        }

    }  

    //Response
    private void GetResponse(IAsyncResult MyresponseAsync)
    {

            HttpWebRequest request = (HttpWebRequest)MyresponseAsync.AsyncState;

            if (request != null)
            {
                try
                {
                  //CRASH HERE//  HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(MyresponseAsync);

                     if(response.StatusCode==HttpStatusCode.OK)//l'authentification a réussi
                     {
                         if (event_Authorized != null)
                          event_Authorized.Invoke();

                         if (response.Cookies != null && response.Cookies.Count>0)//on récupere le cookie de navigation
                         {
                             App._cookiecollection = response.Cookies;

                         }

                     }
                     else if (response.StatusCode == HttpStatusCode.Unauthorized)//l'authentification a échoué
                     {
                         if (event_Unauthorized != null)
                             event_Unauthorized.Invoke();

                     }
                     else if (response.StatusCode == HttpStatusCode.NotFound)//Erreur serveur
                     {

                     }           

                }

                catch (WebException)
                {
                    MessageBox.Show("Erreur de connexion", "erreur getresponse", MessageBoxButton.OK);
                }


            }
    }

好吧,我发现这里发生了什么。。。 当响应中获取的状态码为“Notfound”或“Unauthorized”时,将引发Webexception,因此如果要检查响应的属性,则需要在异常捕获内执行此操作…似乎只有在Windows phone上才是如此。。。 以下是对我有效的代码:

        private void GetResponseIdentificationNT(IAsyncResult MyresponseAsync)
    {

        HttpWebRequest request = (HttpWebRequest)MyresponseAsync.AsyncState;

        if (request != null)
        {
            try
            {

                HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(MyresponseAsync);

                if (response.StatusCode == HttpStatusCode.OK)//l'authentification a réussi
                {
                    if (event_Authorized != null)
                        event_Authorized.Invoke();

                }   
            }

            catch (WebException we)
            {
                HttpWebResponse response = (HttpWebResponse)we.Response;

                if (response.StatusCode==HttpStatusCode.Unauthorized)
                {
                    if (event_Unauthorized != null)
                        event_Unauthorized.Invoke();

                }
                else if (response.StatusCode == HttpStatusCode.NotFound)//Server error
                {
                    if (event_NotFound != null)
                        event_NotFound.Invoke();

                }

            }

            catch (Exception ex)
            {
               throw new UnknowException(ex.Message);
            }
        }
    }