2017-05-06 63 views
0

我使用this tutorial以便將xamarin.forms應用程序連接到簡單表格。我不能在Azure的數據添加到數據庫中,我得到使用Xamarin表格輕鬆創建表格 - InvalidOperationException

System.InvalidOperationException

錯誤消息是以下

對項目的插入操作已經在隊列。

在以下代碼行中發生異常。

await usersTable.InsertAsync(data); 

爲了添加一個用戶

var user = new User { Username = "username", Password = "password" }; 
bool x = await AddUser(user); 

ADDUSER

public async Task<bool> AddUser(User user) 
     { 
      try 
      { 
       await usersTable.InsertAsync(user); 
       await SyncUsers(); 
       return true; 
      } 
      catch (Exception x) 
      { 
       await new MessageDialog(x.Message.ToString()).ShowAsync(); 
       return false; 
      } 
     } 

SyncUsers()

public async Task SyncUsers() 
     { 
      await usersTable.PullAsync("users", usersTable.CreateQuery()); 
      await client.SyncContext.PushAsync(); 
     } 

其中

IMobileServiceSyncTable<User> usersTable; 
MobileServiceClient client = new MobileServiceClient("url"); 

初始化

var path = Path.Combine(MobileServiceClient.DefaultDatabasePath, "DBNAME.db"); 
var store = new MobileServiceSQLiteStore(path); 
store.DefineTable<User>(); 
await client.SyncContext.InitializeAsync(store, new MobileServiceSyncHandler()); 
usersTable = client.GetSyncTable<User>(); 
+0

你可以分享你的其他代碼嗎?謝謝!但是,我認爲這可能是因爲該項目已添加到您的表格中。提醒一下,我沒有設置Id的值。 – mindOfAi

回答

1

請檢查您的表。您可能已經添加了該項目。另外,我建議你不要爲你的實體設置Id屬性,因爲你可能會插入一個已經存在於你的表中的相同ID。這可能是出現異常的原因。

希望它有幫助!

+0

我停止設置ID,並且得到一個MobileServicePushFailedException。推送操作失敗。有關詳細信息,請參閱pushResult。我從Azure門戶看到我的表,並添加任何項目。 – GeralexGR

+0

對不起,你能添加項目嗎?我有點困惑。 – mindOfAi

+0

雖然顯示了第一條錯誤消息對項目的插入操作已經在隊列中,但數據庫中沒有填充任何項目。不,我不能添加任何信息。 – GeralexGR

0

一些調試,你可以這樣做:

1)在後端上的診斷日誌記錄功能和調試後端:https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter8/developing/#debugging-your-cloud-mobile-backend 2)在MobileServiceClient設置添加一個日誌委託處理程序:https://adrianhall.github.io/develop-mobile-apps-with-csharp-and-azure/chapter3/server/#turning-on-diagnostic-logs

的MobileServicePushFailedException包含一個包含實際錯誤的內部異常。通常,它是409/412 HTTP錯誤之一,表示存在衝突。但是,它也可能是404(這意味着客戶端請求的內容與Easy Tables中的表名稱不匹配)或500(這意味着服務器崩潰,在這種情況下,服務器端診斷日誌會指出原因)。

Easy Tables僅僅是一個Node.js服務。

+0

我的InnerException是'{Newtonsoft.Json.JsonReaderException:解析值時遇到意外的字符:C.路徑'',第0行,位置0。從應用程序日誌錯誤404.0 - 未找到。您正在查找的資源已被刪除,名稱已更改或暫時不可用。 – GeralexGR

+0

查看請求的URL。它會像/ tables/users這樣的東西 - 如果它是/ tables/users,那麼表的名字必須是用戶 - 而不是用戶。通常,您需要添加或刪除s。 –