Я использую IMobileServiceSyncTable из мобильного приложения Azure. В операции InsertAsync на стороне внутреннего сервера у меня были некоторые проверки для данных, и, если эта проверка не удалась, я хочу выдать Exception со стороны сервера.
Для IMobileServiceSyncTable
вы имеете дело с Автономным клиентом , что означает, что IMobileServiceSyncTable<T>.InsertAsync
будет напрямую вставлять данные в локальное хранилище SQLite на стороне вашего мобильного клиента. Пока вы не вызовете MobileServiceClient.SyncContext.PushAsync()
вручную, локальное хранилище данных будет отправлено на ваш мобильный сервер. Для этого подхода я бы порекомендовал вам убедиться, что вам нужно проверить входные данные, прежде чем сохранять их в локальном хранилище данных, в противном случае ваши операции push не будут выполнены, а затем вам придется заставить своего клиента настраивать существующие входные данные даже после него. был успешно добавлен ранее.
Если вы используете Онлайн-клиент следующим образом, оба ваших подхода к выбрасыванию исключения будут немедленно возвращены вашему клиенту.
var mobileClient= new MobileServiceClient("https://{your-mobile-app-name}.azurewebsites.net");
var _pacienteTable= mobileClient.GetTable<Paciente>();
await _pacienteTable.InsertAsync(novoPaciente);
Кроме того, я использовал следующую строку кода для перехвата исключения:
try
{
await table.InsertAsync(item);
}
catch (MobileServiceInvalidOperationException ex)
{
//TODO:
//await ex.Response.Content.ReadAsStringAsync(); //get detailed response content
}
catch (Exception e)
{
//TODO: other uncaught exception
}
Кроме того, для аналогичной проблемы вы могли бы использовать Fiddler для захвата сетевых трассировок, чтобы сузить эту проблему, чтобы ваша клиентская сторона могла правильно получить соответствующий ответ.