来自 wpf 应用程序的 azure 移动应用程序服务问题
Issues with azure mobile app service from wpf application
我是移动应用程序服务和 azure 的新手,我想让应用程序服务层工作,然后将其移植到 Xamarin 应用程序,所以我想我会尝试一个简单的 wpf 应用程序来使用该服务。
我在 .NET/c# 中下载了由 azure 提供的示例 ToDo 服务并发布了它,但是我遇到了这些异常并感到困惑。
这是客户端代码,它抛出一个 Bad Request 异常,我已经尝试多次调用应用服务,例如插入、更新等,但都失败了。
string url = @"https://mydomain.azurewebsites.net";
MobileServiceClient client = new MobileServiceClient(url);
return await client.GetTable<TodoItem>().ToListAsync();
public class TodoItem
{
string id;
string name;
bool done;
[JsonProperty(PropertyName = "id")]
public string Id
{
get { return id; }
set { id = value; }
}
[JsonProperty(PropertyName = "text")]
public string Name
{
get { return name; }
set { name = value; }
}
[JsonProperty(PropertyName = "complete")]
public bool Done
{
get { return done; }
set { done = value; }
}
}
应用服务
待办事项
public class TodoItem : EntityData
{
public string Text { get; set; }
public bool Complete { get; set; }
}
代码 TodoController
// GET tables/TodoItem
public IQueryable<TodoItem> GetAllTodoItems()
{
return Query();
}
// GET tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
public SingleResult<TodoItem> GetTodoItem(string id)
{
return Lookup(id);
}
// PATCH tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
public Task<TodoItem> PatchTodoItem(string id, Delta<TodoItem> patch)
{
return UpdateAsync(id, patch);
}
// POST tables/TodoItem
public async Task<IHttpActionResult> PostTodoItem(TodoItem item)
{
TodoItem current = await InsertAsync(item);
return CreatedAtRoute("Tables", new { id = current.Id }, current);
}
// DELETE tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
public Task DeleteTodoItem(string id)
{
return DeleteAsync(id);
}
应用服务日志记录和异常
Method: GET, RequestUri: 'https://mydomain.azurewebsites.net/tables/TodoItem', Version: 1.1, Content: <null>, Headers:
{
X-ZUMO-FEATURES: TT
X-ZUMO-INSTALLATION-ID: cd7127a1-efc4-4967-b646-e99a069976cb
Accept: application/json
User-Agent: ZUMO/1.3
User-Agent: (lang=Managed; os=Windows; os_version=6.1.65536.7601; arch=Win32NT; version=1.3.30324.0)
X-ZUMO-VERSION: ZUMO/1.3 (lang=Managed; os=Windows; os_version=6.1.65536.7601; arch=Win32NT; version=1.3.30324.0)
}}
{StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Date: Thu, 02 Mar 2017 02:44:30 GMT
Set-Cookie: ARRAffinity=1b2631dc149e564d651190bdb0b6895025c984e8ad5bea83fb1e545ec292facb;Path=/;Domain=mydomain.azurewebsites.net
Server: Microsoft-IIS/8.0
X-Powered-By: ASP.NET
Content-Length: 220
Content-Type: application/json; charset=utf-8
}}
Application: 2017-03-02T03:48:26 PID[6016] Information Request, Method=GET, Url=https://mydomain.azurewebsites.net/tables/TodoItem, Message='https://mydomain.azurewebsites.net/tables/TodoItem'
Application: 2017-03-02T03:48:26 PID[6016] Information Message='TodoItem', Operation=DefaultHttpControllerSelector.SelectController
Application: 2017-03-02T03:48:26 PID[6016] Information Message='mydomainService.Controllers.TodoItemController', Operation=DefaultHttpControllerActivator.Create
Application: 2017-03-02T03:48:26 PID[6016] Information Message='mydomainService.Controllers.TodoItemController', Operation=HttpControllerDescriptor.CreateController
Application: 2017-03-02T03:48:53 PID[6016] Information Message='Selected action 'GetAllTodoItems()'', Operation=ApiControllerActionSelector.SelectAction
Application: 2017-03-02T03:48:53 PID[6016] Information Operation=HttpActionBinding.ExecuteBindingAsync
Application: 2017-03-02T03:48:53 PID[6016] Information Operation=TableQueryFilter.OnActionExecutingAsync
Application: 2017-03-02T03:48:53 PID[6016] Information Operation=EnableQueryAttribute.OnActionExecutingAsync
Application: 2017-03-02T03:48:53 PID[6016] Information Message='Will use same 'JsonMediaTypeFormatter' formatter', Operation=JsonMediaTypeFormatter.GetPerRequestFormatterInstance
Application: 2017-03-02T03:48:53 PID[6016] Information Message='Selected formatter='JsonMediaTypeFormatter', content-type='application/json; charset=utf-8'', Operation=DefaultContentNegotiator.Negotiate
Application: 2017-03-02T03:48:53 PID[6016] Information Operation=TableControllerConfigAttribute.OnActionExecutingAsync, Status=400 (BadRequest)
Application: 2017-03-02T03:48:53 PID[6016] Information Operation=EnableQueryAttribute.OnActionExecutedAsync, Status=400 (BadRequest)
Application: 2017-03-02T03:48:53 PID[6016] Information Operation=TableQueryFilter.OnActionExecutedAsync, Status=400 (BadRequest)
Application: 2017-03-02T03:48:54 PID[6016] Information Operation=TodoItemController.ExecuteAsync, Status=400 (BadRequest)
Application: 2017-03-02T03:48:54 PID[6016] Information Response, Status=400 (BadRequest), Method=GET, Url=https://mydomain.azurewebsites.net/tables/TodoItem?$select=Text,Complete,Id,Version,CreatedAt,UpdatedAt,Deleted, Message='Content-type='application/json; charset=utf-8', content-length=unknown'
Application: 2017-03-02T03:48:54 PID[6016] Information Operation=JsonMediaTypeFormatter.WriteToStreamAsync
Application: 2017-03-02T03:48:55 PID[6016] Information Operation=TodoItemController.Dispose
我会倒带并再次阅读教程。你做错了什么,但没有提供足够的信息来说明到底是什么。明确地说,您没有包含实际执行查询的代码。
我是移动应用程序服务和 azure 的新手,我想让应用程序服务层工作,然后将其移植到 Xamarin 应用程序,所以我想我会尝试一个简单的 wpf 应用程序来使用该服务。
我在 .NET/c# 中下载了由 azure 提供的示例 ToDo 服务并发布了它,但是我遇到了这些异常并感到困惑。
这是客户端代码,它抛出一个 Bad Request 异常,我已经尝试多次调用应用服务,例如插入、更新等,但都失败了。
string url = @"https://mydomain.azurewebsites.net";
MobileServiceClient client = new MobileServiceClient(url);
return await client.GetTable<TodoItem>().ToListAsync();
public class TodoItem
{
string id;
string name;
bool done;
[JsonProperty(PropertyName = "id")]
public string Id
{
get { return id; }
set { id = value; }
}
[JsonProperty(PropertyName = "text")]
public string Name
{
get { return name; }
set { name = value; }
}
[JsonProperty(PropertyName = "complete")]
public bool Done
{
get { return done; }
set { done = value; }
}
}
应用服务 待办事项
public class TodoItem : EntityData
{
public string Text { get; set; }
public bool Complete { get; set; }
}
代码 TodoController
// GET tables/TodoItem
public IQueryable<TodoItem> GetAllTodoItems()
{
return Query();
}
// GET tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
public SingleResult<TodoItem> GetTodoItem(string id)
{
return Lookup(id);
}
// PATCH tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
public Task<TodoItem> PatchTodoItem(string id, Delta<TodoItem> patch)
{
return UpdateAsync(id, patch);
}
// POST tables/TodoItem
public async Task<IHttpActionResult> PostTodoItem(TodoItem item)
{
TodoItem current = await InsertAsync(item);
return CreatedAtRoute("Tables", new { id = current.Id }, current);
}
// DELETE tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
public Task DeleteTodoItem(string id)
{
return DeleteAsync(id);
}
应用服务日志记录和异常
Method: GET, RequestUri: 'https://mydomain.azurewebsites.net/tables/TodoItem', Version: 1.1, Content: <null>, Headers:
{
X-ZUMO-FEATURES: TT
X-ZUMO-INSTALLATION-ID: cd7127a1-efc4-4967-b646-e99a069976cb
Accept: application/json
User-Agent: ZUMO/1.3
User-Agent: (lang=Managed; os=Windows; os_version=6.1.65536.7601; arch=Win32NT; version=1.3.30324.0)
X-ZUMO-VERSION: ZUMO/1.3 (lang=Managed; os=Windows; os_version=6.1.65536.7601; arch=Win32NT; version=1.3.30324.0)
}}
{StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Date: Thu, 02 Mar 2017 02:44:30 GMT
Set-Cookie: ARRAffinity=1b2631dc149e564d651190bdb0b6895025c984e8ad5bea83fb1e545ec292facb;Path=/;Domain=mydomain.azurewebsites.net
Server: Microsoft-IIS/8.0
X-Powered-By: ASP.NET
Content-Length: 220
Content-Type: application/json; charset=utf-8
}}
Application: 2017-03-02T03:48:26 PID[6016] Information Request, Method=GET, Url=https://mydomain.azurewebsites.net/tables/TodoItem, Message='https://mydomain.azurewebsites.net/tables/TodoItem'
Application: 2017-03-02T03:48:26 PID[6016] Information Message='TodoItem', Operation=DefaultHttpControllerSelector.SelectController
Application: 2017-03-02T03:48:26 PID[6016] Information Message='mydomainService.Controllers.TodoItemController', Operation=DefaultHttpControllerActivator.Create
Application: 2017-03-02T03:48:26 PID[6016] Information Message='mydomainService.Controllers.TodoItemController', Operation=HttpControllerDescriptor.CreateController
Application: 2017-03-02T03:48:53 PID[6016] Information Message='Selected action 'GetAllTodoItems()'', Operation=ApiControllerActionSelector.SelectAction
Application: 2017-03-02T03:48:53 PID[6016] Information Operation=HttpActionBinding.ExecuteBindingAsync
Application: 2017-03-02T03:48:53 PID[6016] Information Operation=TableQueryFilter.OnActionExecutingAsync
Application: 2017-03-02T03:48:53 PID[6016] Information Operation=EnableQueryAttribute.OnActionExecutingAsync
Application: 2017-03-02T03:48:53 PID[6016] Information Message='Will use same 'JsonMediaTypeFormatter' formatter', Operation=JsonMediaTypeFormatter.GetPerRequestFormatterInstance
Application: 2017-03-02T03:48:53 PID[6016] Information Message='Selected formatter='JsonMediaTypeFormatter', content-type='application/json; charset=utf-8'', Operation=DefaultContentNegotiator.Negotiate
Application: 2017-03-02T03:48:53 PID[6016] Information Operation=TableControllerConfigAttribute.OnActionExecutingAsync, Status=400 (BadRequest)
Application: 2017-03-02T03:48:53 PID[6016] Information Operation=EnableQueryAttribute.OnActionExecutedAsync, Status=400 (BadRequest)
Application: 2017-03-02T03:48:53 PID[6016] Information Operation=TableQueryFilter.OnActionExecutedAsync, Status=400 (BadRequest)
Application: 2017-03-02T03:48:54 PID[6016] Information Operation=TodoItemController.ExecuteAsync, Status=400 (BadRequest)
Application: 2017-03-02T03:48:54 PID[6016] Information Response, Status=400 (BadRequest), Method=GET, Url=https://mydomain.azurewebsites.net/tables/TodoItem?$select=Text,Complete,Id,Version,CreatedAt,UpdatedAt,Deleted, Message='Content-type='application/json; charset=utf-8', content-length=unknown'
Application: 2017-03-02T03:48:54 PID[6016] Information Operation=JsonMediaTypeFormatter.WriteToStreamAsync
Application: 2017-03-02T03:48:55 PID[6016] Information Operation=TodoItemController.Dispose
我会倒带并再次阅读教程。你做错了什么,但没有提供足够的信息来说明到底是什么。明确地说,您没有包含实际执行查询的代码。