我有一个使用Azure Mobile SDK的WEB API 2后端,我的控制器从SDK继承了TableController,这非常简单。
public class ProjectItemController : TableController<ProjectItem>
然后,我正在使用JavaScript SDK从我的系统中获取,发布,修补和删除项目。
除修补程序更新项目外,所有功能均正常运行。我必须使用PATCH动词,因为它是SDK的一部分,并且在Web API控制器端和客户端SDK上都自动绑定到控制器方法。
控制器:
public Task<ProjectItem> PatchProjectItem(string id, Delta<ProjectItem> patch)
{
return UpdateAsync(id, patch);
}
客户端SDK:
var updateItem = {
id: '7163bc7a-70b2-4dde-98e9-8818969611bd',
name: 'My New Name'
};
table
.update(updateItem)
.done(function (updatedItem) {
// You can now update your cached copy
}, failure);
我无法控制那些方法的以太坊使用的VERB,它们都自动使用SDK规定的PATCH。
我的CORS设置在Web API 2 Startup.MobileApp中如下:
HttpConfiguration config = new HttpConfiguration();
var cors = new EnableCorsAttribute("*","*","*");
config.EnableCors(cors);
new MobileAppConfiguration()
.UseDefaultConfiguration()
.ApplyTo(config);
还有其他人会为PATS这样的PATS工作吗?
编辑: 这是我在Chrome中收到的控制台错误:
Access to XMLHttpRequest at ’https://mywebsite..com/tables/project/d6a1c225176f4683921b324708fbef28' from origin ‘http://localhost:44348’ has been blocked by CORS policy: Method PATCH is not allowed by Access-Control-Allow-Methods in preflight response.