我已将问题隔离为几行。使用 IIS express 它调用 web API 上的 PUT。当我切换到使用具有相同代码的 IIS 时,对 PUT 方法的调用永远不会发生.. GET 调用适用于两者都很好.. 知道吗?
$scope.save = function (msa) {
$scope.msa = msa;
var id = this.msa.PlaceId;
Msa.update({ id: id }, $scope.msa, function () {
alert('finished update'); //only gets here with iis express
$scope.updatedItems.push(id);
$location.path('/');
});
}
MsaApp.factory('Msa', function ($resource) {
return $resource('/api/Place/:id', { id: '@id' }, { update: { method: 'PUT' } });
});
编辑1:
我认为它正在工作,但现在它只在'localhost'而不是计算机名称时才有效..它没有调用服务器方法..任何想法要注意哪些事情会使站点的行为与 localhost 不同?.. 甚至更奇怪.. 角度网站不会在 IE 中加载.. 但它会在 chrome 中加载
编辑2:
我想我有答案.. 露水 webapi PUT/UPDATE 创建无效代码.. 它有点随机会在 db.Entry(place).State = EntityState.Modified 处中断...我在这里找到了似乎可以修复它的代码到目前为止..虽然不完全确定它的作用
ObjectStateManager 中已存在具有相同键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象