我目前正在使用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);
)此问题已经开始发生。我尝试了几件不同的事情,没有任何效果。看了我的代码之后有什么突出的吗?提前感谢任何可以提供帮助的人。
答案 0 :(得分:1)
在发送给服务的请求中,属性DivisionTitle
以小写的第一个字母发送(因为您使用JsonProperty
属性定义了它):
{"divisionTitle":"the actual title"}
在您的脚本上,您尝试访问属性item.DivisionTitle
(不存在,JavaScript区分大小写),然后访问此未定义值的属性(length
) 。这将导致脚本出错。如果您更改脚本以使用实际的JSON名称(item.divisionTitle.length > 15
)或更改客户端中的JsonProperty
声明以使用大写的第一个字母发送属性,则它应该有效。
顺便说一下,如果你进入门户网站的“日志”标签,你应该会看到一些错误,这个错误解释了你为什么会收到内部服务器错误。