当输入用户名和密码时,UWP崩溃
问题描述:
这是我的第一篇文章。我会尝试获取所有相关信息。我正在为我的BS Capstone课程开发UWP。我有一个主页让用户可以选择输入用户名和密码并登录,或输入用户名和密码并注册,以便他们能够登录。我在那里有一些例外用户没有注册,对话框会通知他们需要注册。 问题是当我输入用户名和密码时,我知道该用户名和密码未注册,应用程序崩溃。 我正在使用VS 2015和Azure SQL数据库。唯一的线索我有什么错误的是输出显示以下消息。 抛出异常: 'System.Net.Http.HttpRequestException' 在mscorlib.ni.dll当输入用户名和密码时,UWP崩溃
而且,我在App.Xaml.cs标签连接字符串
public static MobileServiceClient MobileService = new
MobileServiceClient("http://tale-server1.database.windows.net");
最后,当试图要注册一个新用户,Catch发生以下异常:
catch (Exception em)
{
var dialog = new MessageDialog("An Error Occured: " +
em.Message);
await dialog.ShowAsync();
}
我的主页代码如下。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using Microsoft.WindowsAzure.MobileServices;
using System.Threading.Tasks;
using Windows.UI.Popups;
using Windows.Storage;
using System.Net.Http;
using Newtonsoft.Json;
using SQLite;
using SQLite.Net;
using SQLite.Net.Async;
using Microsoft.WindowsAzure.MobileServices.Sync;
using Microsoft.WindowsAzure.MobileServices.SQLiteStore;
using SQLitePCL;
// The Blank Page item template is documented at
http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
namespace TALE_Capstone
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a
Frame.
/// </summary>
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
public int IsAuth { get; set; }
//[DataTable("User_Cred")]
public class User_Cred
{
public string id { get; set; }
public string userName { get; set; }
public string Password { get; set; }
}
private IMobileServiceSyncTable<User_Cred> todoGetTable =
App.MobileService.GetSyncTable<User_Cred>();
private async Task InitLocalStoreAsync()
{
if (!App.MobileService.SyncContext.IsInitialized)
{
var store = new MobileServiceSQLiteStore("Tale-DB");
store.DefineTable<User_Cred>();
await App.MobileService.SyncContext.InitializeAsync(store);
}
await SyncAsync();
}
private async Task SyncAsync()
{
await App.MobileService.SyncContext.PushAsync();
await todoGetTable.PullAsync("User_Cred",
todoGetTable.CreateQuery());
}
async public void submitAuthBtn_Click(object sender, RoutedEventArgs e)
{
await InitLocalStoreAsync();
GetAuthentication();
}
async public void GetAuthentication()
{
try
{
//IMobileServiceTable<User_Cred> todoTable = App.MobileService.GetTable<User_Cred>();
List<User_Cred> items = await todoGetTable
.Where(User_Cred => User_Cred.userName == UserNameEnter.Text)
.ToListAsync();
IsAuth = items.Count();
// Return a List UI control value back to the form
foreach (var value in items)
{
var dialog = new MessageDialog("Welcome Back " + value.userName);
await dialog.ShowAsync();
}
if (IsAuth > 0)
{
var dialog = new MessageDialog("You are Authenticated");
await dialog.ShowAsync();
}
else
{
var dialog = new MessageDialog(" Account Does Not Exist, please Register to get Started.");
await dialog.ShowAsync();
}
}
catch (Exception em)
{
var dialog = new MessageDialog("An Error Occured: " + em.Message);
await dialog.ShowAsync();
}
}
async private void submitAuthBtn_Copy_Click(object sender, RoutedEventArgs e)
{
try
{
User_Cred itemReg = new User_Cred
{
userName = UserNameEnter.Text,
Password = PWEnter.Text
};
await App.MobileService.GetTable<User_Cred>().InsertAsync(itemReg);
var dialog = new MessageDialog("Thank you for Registering! Lets begin");
await dialog.ShowAsync();
}
catch (Exception em)
{
var dialog = new MessageDialog("An Error Occured: " + em.Message);
await dialog.ShowAsync();
}
}
}
}
任何帮助,将不胜感激!
康拉德
答
根据你的描述,我认为你是连接你与Azure的移动应用后端和Azure的SQL数据库用于存储数据UWP应用。据我所知,中MobileServiceClient
初始化看起来像如下:
MobileServiceClient MobileService = new MobileServiceClient("https://{your-appname}.azurewebsites.net");
我建议你可以按照这个tutorial并下载sample client project来检查这个问题。此外,您可以利用fiddler并在将您的uwp应用程序连接到azure移动应用程序以获取详细的错误消息时收集网络跟踪,然后您可以缩小此问题,或者您可以使用详细的错误更新您的问题,以便我们找到此问题。
我实际上发现我错过了一个参考。谢谢你的努力:) – CHernandez