1

VS 2010 でWCF REST テンプレートを使用して、アプリ用の RESTful Web サービスを構築しています。すべての GET を完了しましたが、現在更新を処理しようとしています。ヘルプ ファイルに表示されているにもかかわらず、PUT で 404 が引き続き発生します。

切り捨てられたweb.config:

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <add name="UrlRoutingModule"
         type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </modules>
  <validation validateIntegratedModeConfiguration="true" />
  <handlers>
    <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" />
  </handlers>
</system.webServer>
<system.serviceModel>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  <standardEndpoints>
    <webHttpEndpoint>
      <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" />
    </webHttpEndpoint>
  </standardEndpoints>
</system.serviceModel>

ご覧のとおり、UrlRoutingHandler に対してすべての動詞が有効になっています。私は何が欠けていますか?

(私は IIS 7 を使用していますが、IIS 6 上にあるリリース サーバーの動作をエミュレートするために、アプリ プールをクラシック モードで実行する必要があることに注意してください。)

4

1 に答える 1

1

多くのトラブルシューティングを行った後、次の 2 つの構成変更の組み合わせで修正されたようです。

  1. WebDAV ハンドラを削除する
  2. ExtensionlessUrlHandler の PUT 動詞と DELETE 動詞を追加します。

(これは、以下のマークダウン コード ビューを有効にするためのプレースホルダーです)

<handlers>
  <remove name="WebDAV" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE"
       modules="IsapiModule" scriptProcessor="c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll"
       resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness32"
       responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE"
       modules="IsapiModule" scriptProcessor="c:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
       resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness64"
       responseBufferLimit="0" />
</handlers>
于 2012-09-26T19:12:06.890 に答える