0

問題を数行に切り分けました。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 は、同じキーを持つ複数のオブジェクトを追跡できません

4

2 に答える 2

1

IIS はデフォルトで一部のアクションをブロックします。PUT はその 1 つです (DELETE は別のアクションです)。

参照: https://stackoverflow.com/a/12443578/1873485

Go to Handler Mappings in your IIS Manager. Find ExtensionlessUrlHandler-Integrated-4.0, double click it. Click Request Restrictions... button and on Verbs tab, add both DELETE and PUT.

于 2013-08-29T22:05:39.067 に答える
1

WebDAVIIS からモジュールを削除すると、動作するはずです

于 2013-08-30T06:53:49.793 に答える