2014-02-05 10 views
-1

Я разрабатываю приложение wp8. Мой вопрос в том, что приложение вызывает ошибку, когда я нажимаю кнопку регистрации, и произошло следующее исключение, и код не идет ниже строковых данных postКак я могу опубликовать свои данные на сервере?

Исключение типа System.UnauthorizedAccessException произошло в System.Windows.ni .dll, но не был обработан в пользовательском коде

Если есть обработчик для этого исключения, программа может быть безопасно продолжить

namespace docapp 
{ 
    public partial class registration : PhoneApplicationPage 
    { 
     public static string DeviceIDAsString; 
     public registration() 
     { 

      InitializeComponent(); 

      //selction.Items.Add("india"); 
      //selction.Items.Add("pakistan"); 
      //selction.Items.Add("china"); 
      //selction.Items.Add("USA"); 
      String[] name = { "india", "china", "pakistan" }; 
      String[] uname = { "Delhi", "Bijing", "Karachi" }; 
      String[] university = { "AIIMS", "MDU", "PGI" }; 
      String[] yeardate = { "2011", "2012", "2013" }; 
string[] question = { "what is your pet name", "what is your childhood name", "what is your mother name" }; 
      this.country.ItemsSource = name; 
      this.city.ItemsSource = uname; 
      this.university.ItemsSource = university; 
      this.year.ItemsSource = yeardate; 
      this.question.ItemsSource = question; 
       } 

     private void Image_Tap_1(object sender, System.Windows.Input.GestureEventArgs e) 
     { 

      if (txtusername.Text == "") 
      { 
       MessageBox.Show("enter the name"); 
      } 
      else if (txtid.Text == "") 
      { 
       MessageBox.Show("enter valid id"); 
      } 
      else if (txtpassword.Password == "") 
      { 
       MessageBox.Show("enter the password"); 
      } 
      else if (txtconfirm.Password == "") 
      { 
       MessageBox.Show("enter the same password again "); 
      } 
      else if (txtemail.Text == "") 
      { 
       MessageBox.Show("enter the valid email id "); 
      } 
      else if (txtmobileno.Text == "") 
      { 
       MessageBox.Show("enter the valid 10 digit mobile no "); 
      } 


      if (txtpassword.Password != txtconfirm.Password) 
      { 
       MessageBox.Show("password doesnot match please enter same password"); 
      } 



      SendPost(); 
      //getDeviceId(); 


     } 
     //private static String getDeviceId() 
     //{ 
     // //byte[] id = (byte[])Microsoft.Phone.Info.DeviceExtendedProperties.GetValue("DeviceUniqueId"); 
     // //return BitConverter.ToString(id).Replace("-", string.Empty); 
     // // get the unique device id for the publisher per device 

     //} 

     void SendPost() 
     { 


      byte[] myDeviceID = (byte[])Microsoft.Phone.Info.DeviceExtendedProperties.GetValue("DeviceUniqueId"); 

      DeviceIDAsString = Convert.ToBase64String(myDeviceID); 

      Uri url = new Uri(" http://www.mobileoid2.co/docbase/index.php?methodname=createuser"); 

      // Create the web request object 
      HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url); 
      webRequest.Method = "POST"; 

      webRequest.Headers["username"] = txtusername.Text; 
      webRequest.Headers["userid"] = txtid.Text; 
      webRequest.Headers["password"] = txtpassword.Password; 
      webRequest.Headers["confirmpaswword"] = txtconfirm.Password; 
      webRequest.Headers["email"] = txtemail.Text; 
      webRequest.Headers["mobileno"] = txtmobileno.Text; 
      webRequest.Headers["country"] = country.SelectedItem.ToString(); 
      webRequest.Headers["city"] = city.SelectedItem.ToString(); 
      webRequest.Headers["university"] = university.SelectedItem.ToString(); 
      webRequest.Headers["year"] = year.SelectedItem.ToString(); 
      webRequest.Headers["question"] = question.SelectedItem.ToString(); 
      webRequest.Headers["uniqueid"] = DeviceIDAsString; 
      webRequest.ContentType = "application/json;charset=utf-8"; 
      //"text/json";// 
      // Start the request 
      webRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), webRequest); 
     } 
     void GetRequestStreamCallback(IAsyncResult asynchronousResult) 
     { 


      HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState; 
      // End the stream request operation 
      Stream postStream = webRequest.EndGetRequestStream(asynchronousResult); 



      string postData = "username" + txtusername.Text + ".userid" + txtid.Text + "." + ".password" + txtpassword.Password + "." + ".confirmpassword" + txtconfirm.Password + "." + ".email" + txtemail.Text + "." + ".mobileno" + txtmobileno.Text + "." + "." + ".country" + country.SelectedItem.ToString() + "." + "." + ".city" + city.SelectedItem.ToString() + "." + "." + ".university" + university.SelectedItem.ToString() + "." + "." + ".year" + year.SelectedItem.ToString() + "." + ".question" + question.SelectedItem.ToString() + "." + ".uniqueid" + DeviceIDAsString +"."; 
      var input = JsonConvert.SerializeObject(postData); 
      byte[] byteArray = Encoding.UTF8.GetBytes(input); 

      // Add the post data to the web request 
      postStream.Write(byteArray, 0, byteArray.Length); 
      postStream.Close(); 

      // Start the web request 
      webRequest.BeginGetResponse(new AsyncCallback(GetResponseCallback), webRequest); 
     } 
     void GetResponseCallback(IAsyncResult asynchronousResult) 
     { 
      try 
      { 
       HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState; 
       HttpWebResponse response; 

       // End the get response operation 
       response = (HttpWebResponse)webRequest.EndGetResponse(asynchronousResult); 
       Stream streamResponse = response.GetResponseStream(); 
       StreamReader streamReader = new StreamReader(streamResponse); 
       var Response = streamReader.ReadToEnd(); 
       //outputbox.Text = Response.ToString(); 
       streamResponse.Close(); 
       streamReader.Close(); 
       response.Close(); 

      } 
      catch (WebException e) 
      { 
       // Error treatment 
       // ... 
      } 
     } 



     private void Image_Tap_2(object sender, System.Windows.Input.GestureEventArgs e) 
     { 
      NavigationService.Navigate(new Uri("/docapp;component/login.xaml", UriKind.RelativeOrAbsolute)); 
     } 

     } 

    } 
+0

Отформатируйте, ваш фрагмент кода правильно – Ari

+0

«UnauthorizedAccessException» говорит, что это все, что-то в ОС (или на стороне сервера) не позволяет размещать эти данные. Первый шаг заключается в том, чтобы узнать, какой бит отказывает вам - попробуйте в отладчике увидеть или добавить нагрузку на журнал. – gbjbaanb

+0

Ошибка в строковых сообщениях. – rozy

ответ

0

не знаю почему, но эта ошибка, как правило, выбрасывается, если доступ не допускается. Возможно, учетные данные, которые вы пытаетесь использовать, не допускаются!

Проблема в том, что ОС отклоняет запрос из-за ошибки ввода-вывода, где требуются учетные данные, или у вас либо нет прав на чтение/запись там, либо на сервер требуется совпадение имени пользователя и пароля чтобы позволить вам. Что-то вроде того. Попробуйте поймать его с помощью

try { 
    // code here to try.. 
} catch (System.UnauthorizedAccessException e) { 
    // error e.Message 
} 

Вот замечание от блоге MSDN:

UnauthorizedAccessException исключение обычно с помощью метода, который оборачивает вызов API Windows. Чтобы найти причины исключения, просмотрите текст свойства объекта Message объекта исключения.

Для Подробнее: http://msdn.microsoft.com/en-us/library/system.unauthorizedaccessexception(v=vs.110).aspx

+0

Код deos не идет ниже строковых данных сообщения? Можете ли вы предложить, почему так – rozy

+0

@rozy, да, потому что исключение было поймано на этой строке под ним. Строка в postdata строки была выполнена, и следующая строка была поймана в ошибке. Таким образом, бросая исключение ... –

+0

любое решение этого @afzaal – rozy

Смежные вопросы