問題を数行に切り分けました。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」の場合にのみ機能します..サーバーメソッドを呼び出していません..サイトをローカルホストから. ..さらに奇妙な..AngularサイトはIEにロードされません..しかし、クロムにロードされます
編集2:
私は答えを持っていると思います.. dewfault webapi PUT/UPDATE は無効なコードを作成します..それはランダムに db.Entry(place).State = EntityState.Modified で壊れます...私はそれを修正するように見えるコードをここで見つけましたこれまでのところ..それが何をするのか正確にはわかりません
同じキーを持つオブジェクトが ObjectStateManager に既に存在します。ObjectStateManager は、同じキーを持つ複数のオブジェクトを追跡できません