无法从Windows应用商店应用插入Azure数据库

时间:2014-08-22 02:42:29

标签: c# azure windows-store-apps azure-mobile-services

我目前正在使用Windows应用商店应用(用于学校作业),而且我在将数据插入存储在Azure中的数据库时遇到问题。每当我尝试将数据插入db时,都会抛出MobileServiceInvalidOperationException。我的代码如下:

在我的模型课程中

class Division
{
    public string Id {get; set;}

    [JsonProperty(PropertyName = "divisionTitle")]
    public string DivisionTitle {get; set;}
}

我的MainPage.xaml.cs文件中的相关代码

private MobileServiceCollection<Division, Division> divisionItems;
private IMobileServiceTable<Division> divisionTable = App.MobileService.GetTable<Division>();

private async void InsertDivision(Division divisionItem)
{
    // This code inserts a new division Item into the database.
    // When the operation completes and Mobile Services has
    // assigned an Id, the item is added to the collection
    try
    {
        await divisionTable.InsertAsync(divisionItem);
        divisionItems.Add(divisionItem);
    }

    /////////////////////////////////////////////////////////  
    // The MessageDialog that pops up when this exception  //
    // gets thrown is:                                     //
    //                                                     //
    //        Internal Server Error (HTTP 500)             //
    ////////////////////////////////////////////////////////

    catch (MobileServiceInvalidOperationException e)
    {
        MessageDialog errormsg = new MessageDialog(e.Message,
            string.Format("{0} (HTTP {1})",
            e.Response.ReasonPhrase,
            (int)e.Response.StatusCode));
        var ignoreAsyncOpResult = errormsg.ShowAsync();
    }
}

private void DivisionButtonSave_Click(object sender, RoutedEventArgs e)
{
    var DivisionItem = new Division
    {
        DivisionTitle = DivisionInput.Text
    };

    InsertDivision(DivisionItem);
}

我还在管理门户中添加了一个脚本:

function insert(item, user, request) {
    if (item.DivisionTitle.length > 15) {
        request.respond(statusCodes.BAD_REQUEST, 'Division title must be under 15 characters');
    }
    else {
        request.execute();
    }
}

在进行上述更改之前,我在应用程序内与Azure通信时没有遇到任何问题,并且在插入数据时没有任何问题。它只是在Azure中编辑脚本之后(默认的插入方法只是request.execute()语句),并且因为我添加了InsertDivision方法(我以前直接从事件处理程序向数据库输入数据)命令await App.MobileService.GetTable<Division>().InsertAsync(DivisionItem);)此问题已经开始发生。我尝试了几件不同的事情,没有任何效果。看了我的代码之后有什么突出的吗?提前感谢任何可以提供帮助的人。

1 个答案:

答案 0 :(得分:1)

在发送给服务的请求中,属性DivisionTitle以小写的第一个字母发送(因为您使用JsonProperty属性定义了它):

{"divisionTitle":"the actual title"}

在您的脚本上,您尝试访问属性item.DivisionTitle(不存在,JavaScript区分大小写),然后访问此未定义值的属性(length) 。这将导致脚本出错。如果您更改脚本以使用实际的JSON名称(item.divisionTitle.length > 15)或更改客户端中的JsonProperty声明以使用大写的第一个字母发送属性,则它应该有效。

顺便说一下,如果你进入门户网站的“日志”标签,你应该会看到一些错误,这个错误解释了你为什么会收到内部服务器错误。