76

HTTPPUTDELETEASP.NET MVC3 アプリケーションで使用しています。ローカルで実行すると、すべてが正しく機能します。しかし、アプリケーションをサーバーに公開すると、これらの方法が機能しません。

Web サーバーがサポートPUTおよびDELETE要求できるようにするための特別な設定はありますか? IIS 7.5 で共有ホスティングを使用しています。

アップデート:

で有効にPUTしてDELETEリクエストしIIS managerます。PUTコマンドは正常に動作します。しかし、DELETEまだ機能しません。私は次の方法でリクエストを作成しますjQuery:

私はこのページにいます:

http://domain.com/dashboard/edit-site/103323/links/

私のajax呼び出しは次のとおりです。

$.ajax({
    // url: same as page-url,
    cache: false,
    type: 'DELETE',
    data: { linkid: $(link).data("linkid") },
    beforeSend: function () {
        // doing something in UI
    },
    complete: function () {
        // doing something in UI
    },
    success: function (data) {
        // doing something in UI
    },
    error: function () {
        // doing something in UI
    }
});

これにより、次のようなリクエストが作成されます。

Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://domain.com
Referer: http://domain.com/dashboard/edit-site/103323/links/
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
X-Requested-With: XMLHttpRequest

これでForm Data

linkid:104044
4

6 に答える 6

102

IIS ManagerのHandler Mappingsに移動します。を見つけてダブルクリックします。Request Restrictions...ボタンをクリックし、Verbs タブで と の両方を追加します。 ExtensionlessUrlHandler-Integrated-4.0DELETEPUTここに画像の説明を入力


編集: WebDav Publisher の問題の可能性

削除された投稿で、2008年のサーバーで実行していたと言及しましたよね? webDavロールを削除するか、サイトから無効にしてみてくださいconfig: system.webServer->modulesセクションで、WebDAVModuleモジュールを削除します:

<system.webServer>
  <modules>
    <remove name="WebDAVModule" />
  </modules>
  <handlers>
    <remove name="WebDAV" />
  </handlers>
</system.webServer>
于 2012-09-16T00:38:55.010 に答える
0

最後に、私は答えが不安定だと思います。以下のようにjQuery呼び出しを変更しましたが、現在はうまく機能しています。

$.ajax({ 
    url: this.href + "?linkid=" + $(link).data("linkid"), 
    cache: false, 
    type: 'DELETE', 
    // data: { linkid: $(link).data("linkid") }, 
    beforeSend: function () { 
        // doing something in UI 
    }, 
    complete: function () { 
        // doing something in UI 
    }, 
    success: function (data) { 
        // doing something in UI 
    }, 
    error: function () { 
        // doing something in UI 
    } 
});

DELETE通話ができない理由について何か説明はありForm Dataますか? ローカルにいる間、それはうまくいきましたか?

于 2012-09-17T20:02:12.227 に答える