У меня есть бэкэнд WEB API 2, использующий Azure Mobile SDK для моих контроллеров, унаследовавший TableController от SDK, довольно просто.
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 в эфире этих методов, они оба автоматически используют PATCH в соответствии с SDK.
Моя настройка CORSкак указано в Web API 2 Startup.MobileApp:
HttpConfiguration config = new HttpConfiguration();
var cors = new EnableCorsAttribute("*","*","*");
config.EnableCors(cors);
new MobileAppConfiguration()
.UseDefaultConfiguration()
.ApplyTo(config);
Кто-нибудь еще может получить PATCH, работающий на CORS, как этот?
РЕДАКТИРОВАТЬ: Вот ошибка консоли, которую я получаю в 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.