ASP.NET Web API-PUT&DELETE動詞は許可されていません-IIS 8


145

最近Visual Studio 2010からVisual Studio 2012 RCにアップグレードしました。インストーラーは、Visual StudioがデフォルトのWebサーバーとして使用するIIS 8 Expressもインストールします。

IIS 8は、PUT AND DELETE動詞を使用するWEB API要求をブロックしています。IISは405エラーを返しますThe requested resource does not support http method 'PUT'

私は過去にこれに関して問題があり、Stack Overflowにいくつかのメッセージがあることを知っています。IIS 7 Expressでは、解決策はWebDavをアンインストールすることでした。残念ながら、IIS 8でこれを行う方法はありません。

applicationhost.configからWebDavセクションを編集してみましたが、効果はありませんでした。たとえば<add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />、設定ファイルから削除しました。

私はこれにあまりにも長い時間を費やしました。PUTとDELETEを有効にする簡単な方法があるはずです。


これはRTMバージョンではまだ壊れています。これで3時間無駄になりました...に動詞を追加するだけで済みましたExtensionlessUrl-Integrated-4.0
leppie 2012年

1
これは壊れているとは思いませんが、仕様によるものです。デフォルトの動作を変更すると、WebDAVに干渉し、下位互換性が失われると思います。これは、WebDAVがインストールされている場合、IIS7でも機能しませんでした。
マーク

私もこれで3時間を無駄にしました...この投稿から6年後。
ブライアンジェンキンス

回答:


162

はい。ついにこれの底に着きました。IIS8でPUTおよびDELETE動詞が正しく機能するようにするには、いくつかのフープをジャンプする必要があります。実際、VS 2012のリリース候補をインストールして新しいWEB APIプロジェクトを作成すると、サンプルのPUTおよびDELETEメソッドがそのまま404エラーを返すことがわかります。

Web APIでPUTおよびDELETE動詞を使用するには、%userprofile%\ documents \ iisexpress \ config \ applicationhost.configを編集して、次のように動詞をExtensionlessUrlハンドラーに追加する必要があります。

この行を変更します。

<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

に:

<add name="ExtensionlessUrl-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

上記に加えて、WebDAVがリクエストを妨害していないことを確認する必要があります。これは、applicationhost.configから次の行をコメント化することで実行できます。

<add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />
<add name="WebDAVModule" /> 
<add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" />

また、デフォルトのWeb API規約では、メソッド名は呼び出されたHTTP動詞と同じでなければならないことに注意してください。たとえば、HTTP削除リクエストを送信する場合、メソッドにはデフォルトでDeleteという名前を付ける必要があります。


9
IIS8のOPTIONS動詞に関する同様の問題(ハンドラーの前に何か他のものがインターセプトしている場合)については、web.configで<remove name = "OPTIONSVerbHandler" />を試してください。さらに言えば、可能であればapplicationhost.configをいじるのではなく、ローカルのweb.configで「削除」手法を使用することをお勧めします
Jason

7
:代わりにノックオン効果ここに示したように、あなたのプロジェクトから削除した方がよいがあり、サーバーレベルでのWebDAVの除去stackoverflow.com/a/14465655/428280
ツイスト

そして何?ローカルでも機能するかもしれませんが、Azureでは機能しません
ツールキット

3
システム設定を変更するように指示する答えは、たとえ開発マシンであっても、答えにはなりません。これは症状を解決し、チームや本番環境には役立ちません。これをすべてのマシンで複製しますか?Santosh Sahの回答を確認してください。
アンドレ・Werlang

さらに、サントッシュサーの回答WebDAVModuleに従って、モジュールセクションからも削除する必要がありました。
Ivaylo Slavov、2015年

125

以下のようにWeb.Configファイルを変更します。それは魅力のように振る舞います。

ノード<system.webServer>でコードの一部の下に追加

<modules runAllManagedModulesForAllRequests="true">
  <remove name="WebDAVModule"/>
</modules>

追加後、Web.Configは次のようになります。

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="WebDAVModule"/>
    </modules>
    <httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
    </customHeaders>
    </httpProtocol>
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
</system.webServer>

3
WebDavModuleを削除することは、この問題を回避するための正しい方法です。
MissRaphie 2014

6
私の一日を救った:<modules runAllManagedModulesForAllRequests = "true"> <remove name = "WebDAVModule" /> </ modules>
Peter Stegnar

3
カスタムヘッダーはCORSに関連しており、この方法でセキュリティホールを誘発するため、カスタムヘッダーは必要ありません。WebDAVModule関連する部分だけが関連します。
アンドレ・Werlang

2
ハンドラー名がIISバージョン間で異なる可能性があるという唯一の例外を除いて、この回答は正しいです。たとえば、7.5は"ExtensionlessUrlHandler-Integrated-4.0"(上記の回答のように)使用しますが、IIS 8.5はこれを"ExtensionlessUrl-Integrated-4.0"Mark Sでも言及されています)に名前変更しました。ハンドラーの名前は、 。。エラーが表示されたら、セットに私は別のホスティング環境をサポートするために、両方の名前を使っているかを知るために些細なことする必要がありますので、エラーページをIIS
Ivaylo Slavovを

7
それは私がこれを見る少し内側に毎回死ぬ作る- runAllManagedModulesForAllRequests =「true」を-ソリューションとしてbritishdeveloper.co.uk/2010/06/...
オリバー

61

WebDAVを削除すると、私の場合は完全に機能します。

<modules>
  <remove name="WebDAVModule"/>
</modules>
<handlers>
  <remove name="WebDAV" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" 
       type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>

iisまたはmachine.configを介して問題を解決するよりも、web.configを介して問題を解決する方が常に良いです。アプリケーションが別のマシンでホストされている場合、問題は発生しません。


これは私にとってはうまくいきましたが、他の人は何らかの理由で(IIS 8.5でした)感謝しませんでした
John

4
WebDAVModuleを削除すると、ハンドラーWebDAV(IIS 8.0)を削除する必要がなくなりました。
PeterS 2016年

3
フレームワーク4.6.2 iis8.5でwebdavを削除するだけで機能します
Abdul Rehmanが

45

web.configを更新する

  <system.webServer>
    <modules>
      <remove name="WebDAVModule"/>
    </modules>
    <handlers>
      <remove name="WebDAV" />
      <remove name="ExtensionlessUrl-Integrated-4.0" />
      <add name="ExtensionlessUrl-Integrated-4.0"
           path="*."
           verb="GET,HEAD,POST,DEBUG,DELETE,PUT"
           type="System.Web.Handlers.TransferRequestHandler"
           preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>

http://odetocode.com/blogs/scott/archive/2012/08/07/configuration-tips-for-asp-net-mvc-4-on-a-windows.aspx

ホスト構成を変更する必要がなくなります。


1
私はすでに別の行を書いていましたが、うまくいきませんでした。行<remove name = "WebDAVModule" />および<remove name = "WebDAV" />を追加した後、現在は機能しています。本当にありがとう、私の側からの賛成投票は1票です。
Banketeshvar Narayan 2016

これは機能しますが、web.configでの<modules>の使用を妨げる構成ロックのために失敗する可能性があります。この場合、applicationHost.configで構成ロックを無効にする必要があります。何らかの理由でapplicationHost.configを制御できない場合、このアプローチは使用できません。
フロリアン冬2017年

IIS10で動作しましたが、動詞として「*」を使用しただけです
Javier G.

1
IIS 10およびWeb API 2で動作しました。動作しましたが、オンラインで見つけた別の12の「ソリューション」が追加しなかった後に追加する必要があります。ありがとう!
Matt West、

@ChrisMarisic:これは私のおかげで魅力的に機能しました!
ティヴァリ

18

Asp.Net Web API-webconfig。これはすべてのブラウザで機能します。

System.webタグ内に次のコードを追加します

<webServices>
  <protocols>
    <add name="HttpGet"/>
    <add name="HttpPost"/>
  </protocols>
</webServices>

system.webserverタグを次のコードに置き換えます

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
  </customHeaders>
</httpProtocol>
<modules runAllManagedModulesForAllRequests="false">
  <remove name="WebDAVModule" />
</modules>

<validation validateIntegratedModeConfiguration="false" />
<handlers>
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />

  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

</handlers>


IIS 7.5でこの問題が発生し、この修正は完全に機能しました。system.webserverのコンテンツをすべて削除する代わりに、上記の関連設定を自分の設定にマージしました。
キースウォルトン

38
注意:上記のコードでカスタムヘッダーセクションが可能にANY -あるサイトはブラウザからAPIを呼び出すために、大きなセキュリティリスク。CORSを読んでください。これは、これらのヘッダーが有効にしていることです。
profMamba 2013

iis 7.5でもこの問題が発生し、問題なく動作しました。誰にでもコアを開くことに伴うリスクについて、上のToolkitのメッセージを必ず読んでください。彼のコメントも賛成してください。
sjdirect 2014年

この場合、カスタムヘッダーはまったく必要ないと思います。このsystem.webserverセクションの残りの部分で十分です- 拡張子のないurlハンドラーの正しい名前があることを確認してください。
Ivaylo Slavov、2015年

1
@niico信頼できるサイトにのみAccess-Control-Allow-Originを許可する必要があります。つまり、「*」をWebサイトのURLに置き換えます。このプロパティは、すべての信頼済みサイトのホワイトリストですが、Web全体を信頼する必要がある場合を除きます(通常、これは悪い考えです)。
profMamba 2017

5

これは、他のいくつかの回答と一緒にiis8で私のために働きました。私のエラーは特に404.6でした

<system.webServer>
  <security>
  <requestFiltering>
    <verbs applyToWebDAV="false">
       <add verb="DELETE" allowed="true" />
    </verbs>
  </requestFiltering>
  </security>
</system.webServer>

AppCmdを実行すると、web.Configに入力されます(applyToWebDAVビットを除く)。
Chase Florell、2015

5

この問題に遭遇する可能性のある人のための簡単な更新です。現在のところ、%userprofile%\ documents \ iisexpress \ config \ applicationhost.configを変更しても機能しません(これまでは問題なく機能していましたが、Windowsの更新が原因かどうかは不明です)。数時間の不満の後、私はweb.configを変更して、これらのハンドラーをsystem.webserverに追加して機能させました。

<handlers>
        <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
        <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
        <remove name="ExtensionlessUrlHandler-Integrated-4.0" />

        <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
        <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
        <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>

4

CORSを有効にする(ナイスアンドニート)

1. CORS nugetパッケージを追加する

Install-Package microsoft.aspnet.webapi.cors

2.WebApiConfig.csファイルでRegisterメソッドに次のコードを追加します。

config.EnableCors();

例:
System.Web.Httpを使用します。

namespace test
{
public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services


        config.EnableCors(); //add this**************************


        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );           
    }
}
}

3. get、post、delete、putまたは任意のhttpメソッドを含むコントローラーの名前空間に以下のコードを追加します。

[EnableCors(origins: "The address from which the request comes", headers: "*", methods: "*")]

例:

using System.Web.Http.Cors;//add this******************************
namespace Test.Controllers
{
[EnableCors(origins: "http://localhost:53681/HTML/Restaurant.html", headers: "*", methods: "*")]
public class RestaurantController : ApiController
{
    protected TestBusinessLayer DevTestBLL = new TestBusinessLayer();

    public List<Restaurant> GET()
    {
        return DevTestBLL.GetRestaurant();
    }

    public List<Restaurant> DELETE(int id)
    {
        return DevTestBLL.DeleteRestaurant(id);
    }       
}
}

参照:http : //www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api


4

何もうまくいかなかった後、私は以下の手順でこれを解決することができました:

•IISのインストール中に、「WEB DAV PUBLISHING」IIS設定を選択しませんでした。•INETMGR-デフォルトのウェブサイト–リクエストフィルタリング– HTTP動詞– TrueとしてのPUT


3

無限に検索して既に提供されている回答を試した後(PUT、DELETE動詞を追加してWEBdavを削除)、それは機能しませんでした。

IISのログ設定に行きました:>ログファイルの表示。私の場合、W3SVC4は最新の日付のフォルダーで、フォルダーを開いて最新のログファイルを検索し、次のエントリを確認しました:GET / Rejected-By-UrlScan〜/ MYDOMAIN / API / ApiName / UpdateMETHOD

UpdateメソッドはGETという動詞でリストされていました。だから私はRejected-By-UrlScanをグーグル検索し、このリンクを見つけました:UrlScan Broke My Blog

私はここに行きました:%windir%\ system32 \ inetsrv \ urlscan \ UrlScan.ini

基本的に、UrlScanはPUTおよびDELETE動詞をブロックしました。このINIファイルを開き、PUTとDELETEをAllowVerbsに追加し、DenyVerbsリストから削除しました。INIファイルを保存しましたが、うまくいきました!したがって、私にとっては、これらの手順はExtensionlessUrlHandlerヒントの隣に必要でした。

Windows Webserver 2008 R2(64ビット)、IIS 7.5。これをDotNetNuke(DNN)WebAPIと組み合わせて使用​​しています。ASP.Net 4.0私の更新方法:

[HttpPut]
[DnnAuthorize(StaticRoles = "MyRoleNames")]
public HttpResponseMessage UpdateMETHOD(DTO.MyObject myData)

3

PHPの場合、それは単純です。

  1. IISを開く
  2. ハンドラーマッピングに移動
  3. php5.6.xまたはphp7.0.xで[編集]をクリックします
  4. 「制限をリクエスト」をクリック
  5. 動詞タブの下で、「次の動詞の1つ」を選択し、「GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS」を追加します

これは他のハンドラーでも機能すると思います。


2

上記のすべてのソリューションに加えて、「id」があるか、またはDELETEメソッドのカスタム定義パラメーターがルート構成と一致しているかどうかを確認してください。

public void Delete(int id)
{
 //some code here
}

405エラーが繰り返し発生する場合は、メソッドシグネチャを上記のようにデフォルトにリセットし、再試行してください。

デフォルトでは、ルート構成はURL でIDを探します。したがって、App_Startフォルダーの下のルート構成を変更しない限り、パラメーター名IDはここで重要です。

ただし、IDのデータ型を変更できます。

たとえば、以下のメソッドは問題なく機能するはずです。

public void Delete(string id)
{
 //some code here
}

注:また、ペイロードを本文コンテンツとして運ぶデータメソッドではなく、URLを介してデータを渡すようにしてください。

DELETE http://{url}/{action}/{id}

例:

DELETE http://localhost/item/1

それが役に立てば幸い。


2

私はここで、それを解決した後、あなたと同じ問題に直面しているソリューションがあり、私はそれが多分助けることができる希望
ファーストを

IIS modules構成で、WebDAVModuleをループアップします。WebサーバーにWebDAVModuleがある場合は、それを削除します。

二番目

IIS handler mappings構成では、有効化ハンドラーのリストをthe PHP item表示し、選択して編集し、編集ページで[要求の制限]ボタンをクリックthe verbs tabして、モーダルで選択し、ハンドルラベルとなる動詞を指定して、を確認しますall verbs radio。 [OK]をクリックします。警告が表示される場合もあります。PHP-CGIの実行に二重引用符を使用していることを示しています。

完了したら、IISサーバーを再起動します。問題ありません。

ここに画像の説明を入力してください


1
IISのWebサイトからWebDAVModuleを削除しただけで、うまく
いき

1

正しい構成ファイルを編集したかどうかはわかりません。次の手順をお試しください

  1. %userprofile%\ ducuments \ iisexpress \ config \ applicationhost.configを開きます

  2. デフォルトでは、以下の所定のエントリがapplicationhost.configファイルでコメント化されています。これらのエントリのコメントを外します。

<add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />


<add name="WebDAVModule" />
<add name="WebDAV" path="*"
 verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK"
 modules="WebDAVModule" resourceType="Unspecified" requireAccess="None"
 />

4
applicationhost.configをいじっていますか?nope
ツールキット、

アプリケーション構成ファイル以外のものをいじってはいけません。最初に、これをサーバー全体に対して実行し、忘れると、多くの人はそれがこのマシンでどのように機能し、残りの部分では機能しないのか疑問に思うでしょう。また、アプリケーションがホストされているサーバー上のIIS構成ファイルへのアクセスが許可されていない場合は、web.configで解決する必要があります。あなたの開発サーバーが上記のアップデートを持っていると想像してください、あなたのweb.configは正確ですか?これは、
運用

1

IISマネージャーのGUIを使用して、追加のHTTP動詞を許可する方法を次に示します。

  1. IISマネージャーで、PUTまたはDELETEを許可するサイトを選択します。

  2. [リクエストフィルタリング]オプションをクリックします。「HTTP動詞」タブをクリックします。

  3. サイドバーの[動詞を許可...]リンクをクリックします。

  4. 表示されるボックスに「DELETE」と入力し、[OK]をクリックします。

  5. サイドバーの[動詞を許可...]リンクをもう一度クリックします。

  6. 表示されるボックスに「PUT」と入力し、[OK]をクリックします。


素敵な試み-一度は違う何か-しかし、それでもうまくいきませんでした!
ozzy432836 2017年

私はSOや他の場所で提案されている他のすべてのものを試しました。ようやくこれを試してみたところ、完全に機能しました。私の場合、PUTとDELETE動詞は既にリストに含まれており、最初に削除してから、Allow Verb ...リンクを使用して追加し直す必要がありましたが、それでも他に何もないときに機能しました。どうもありがとうございます!
JTennessen 2017

1

MVCアプリケーションでashxファイルを使用していますが、上記の回答でうまくいきませんでした。IIS 10。

これが機能したものです。IISまたはweb.configで「ExtensionlessUrl-Integrated-4.0」を変更する代わりに、「* .ashx」ファイルの「SimpleHandlerFactory-Integrated-4.0」を変更しました。

<add name="SimpleHandlerFactory-Integrated-4.0" path="*.ashx" 
verb="GET,HEAD,POST,DEBUG,PUT,DELETE" 
type="System.Web.UI.SimpleHandlerFactory" 
resourceType="Unspecified" requireAccess="Script" 
preCondition="integratedMode,runtimeVersionv4.0" />

0

もう1つの理由は次のとおりです。 この回答
に従って、Web APIメソッドのURLを変更しました。

Url.Action("MyAction", "MyApiCtrl", new { httproute = "" })

しかし、このメソッドは次のようなリンクを作成します:

/api/MyApiCtrl?action=MyAction

これは、GETおよびPOSTリクエストでは正しく機能しますが、PUTまたはDELETEでは機能しません。
だから私はそれを次のように置き換えました:

/api/MyApiCtrl

そしてそれは問題を修正しました。


0

IIS 8.5 / Windows 2012R2では、ここで言及されていることは何も機能しませんでした。WebDAVを削除することの意味がわかりませんが、問題は解決しませんでした。

私を助けたのは以下のステップです。

  1. IISマネージャーに行きました。
  2. 左側のパネルでサイトを選択しました。
  3. 左側の作業領域でWebDAVを選択し、ダブルクリックして開きました。
  4. 右端のパネルで、それを無効にしました。

今、すべてが機能しています。


-1

DeleteメソッドをPOSTとして変換できます。

 [HttpPost]
 public void Delete(YourDomainModel itemToDelete)
 {
 }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.