使用Xamarin Forms应用程序(Android和iOS) 当我尝试创建一个简单的表连接时,我在Azure移动应用程序中使用Visual Studio冻结了大约7秒,然后当它返回时它退出了代码,并且在调试中运行的Android应用程序被永久冻结。
当单步执行代码时,它会跳过它
client = new MobileServiceClient(appUrl);
然后当它击中下一行时它会冻结。但下一行是什么并不重要。我之后放了许多不同的东西,它仍然冻结。此外,这是在try / catch块中,但没有抛出异常。
我还想知道问题是否是服务器端。但是Post和Get with PostMan都很好。所以我认为我的服务器很好。虽然不完全确定......
以下是一些代码:
public class ChatStorageAzureService : IChatStorageAzureService
{
public MobileServiceClient client { get; set; }
private IMobileServiceSyncTable<MessageViewModel> chatTable;
public static bool UseAuth { get; set; } = false;
private static ChatStorageAzureService instance;
public static ChatStorageAzureService Instance => instance ?? (instance = new ChatStorageAzureService());
public async Task InitializeAsync()
{
if (client?.SyncContext?.IsInitialized ?? false)
return;
var appUrl = "http://"MY-WEBSITE".azurewebsites.net/";
try
{
client = new MobileServiceClient(appUrl);
var path = "syncstore.db";
var store = new MobileServiceSQLiteStore(path);
store.DefineTable<MessageViewModel>();
await client.SyncContext.InitializeAsync(store);
chatTable = client.GetSyncTable<MessageViewModel>();
}
catch (Exception e)
{
Debug.WriteLine("Exception thrown in Initialize: " + e);
throw;
}
}
在Async方法中调用了InitializeAsync。它已在构造函数中使用.Wait()方法调用。它已通过按钮按下或在页面创建中调用。我尝试了很多不同的方式来打电话。但它总是冻结。
我认为奇怪之处在于我的服务器代码是一个包含SignalR集线器代码和Easy Table的项目,但您可以通过不同的Web地址访问它们,例如 &#34; HTTP://&#34; SignalR&#34; .azurewebsites.net /&#34; 和 &#34; HTTP://&#34; EasyTable&#34; .azurewebsites.net /&#34; PostMan再次能够访问这两个表,SignalR和SignalR在Android项目上工作。但我不知道是否有域名是坏的。我是新人...如果你不能说出来,哈哈!
我按照Tutorial进行了Easy Table集成,当我在一个单独的项目中完成它时,它运行正常。我正在尝试将它集成到我的实际项目中,这就是我遇到所有这些问题的地方。
我也开始使用Azure进行调试,看起来我的应用程序甚至无法访问该服务。没有接到任何电话。我认为。但我再次尝试使用Azure进行调试,因此我可能不知道如何正确地进行调试。我按照此Tutorial来设置Azure调试
感谢您的帮助!
答案 0 :(得分:0)
您的path
不正确。它必须是一个目录路径,例如在iOS上它是/<AppHome>/Library/<YourAppName>/syncstore.db
。
我们可以利用MobileServiceClient.DefaultDatabasePath
以跨平台的方式获取默认数据库路径。
var path = Path.Combine(MobileServiceClient.DefaultDatabasePath, "syncstore.db");
随意引用使用Azure Mobile Service Client的Xamarin.Forms示例应用程序:
答案 1 :(得分:0)
所以我终于开始工作了! “怎么样?”你问。我去了2个星期的假期,回来了,又开始了。将tut项目的新URL复制到我的实际项目中,进行了一些测试。然后这是重要的事情,然后我将我用过的相同地址放回到我的应用程序中,并且...它刚刚起作用....我没有对代码进行操作,现在它似乎工作了......所以几乎一个月的工作时间都丢失了,而我所要做的只是放入一个不同的URL,运行它,然后把原来的URL放回去....可爱。我猜它清除了一些奇怪的临时文件,搞乱程序或其他东西......即使我无数次删除了临时文件......我不明白,但是我还是去了!