2

MVC3とWCFのWebサービスを単一のアプリケーションとして展開しました。どちらも期待どおりに機能します。GETリクエストとPOSTリクエストは完全に機能しますが、PUTリクエストとDELETEリクエストは404エラーを返します。これらはローカルで正常に機能します。当初は、PUT/DELETEリクエストのユーザー名/パスワードをリクエストしていました。

これが私のweb.configファイルからの私のWebServer構成です

    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
        <modules runAllManagedModulesForAllRequests="true">
            <remove name="WebDAVModule" />
        </modules>
        <handlers>
            <remove name="WebDAVModule" />
        </handlers>     
        <security>
          <authorization>
            <remove users="*" roles="" verbs="" />
            <add accessType="Allow" users="*" 
                            verbs="GET,HEAD,POST,DEBUG,PUT,DELETE" />
          </authorization>
        </security>             
    </system.webServer>

これが私のPUTメソッドとDELETEメソッドです。

    [OperationContract]
    [WebInvoke(UriTemplate = "{id}", Method = "PUT")]
    public MyResource Put(MyResource updatedResource, int id)
    {
        MyResource existingResource = Database.GetResourceById(id);
        existingResource.Name = updatedResource.Name;
        Database.SaveResource(existingResource);

        return existingResource;
    }

    [OperationContract]
    [WebInvoke(UriTemplate = "{id}", Method = "DELETE")]
    public MyResource Delete(int id)
    {
        MyResource sampleResource = Database.DeleteResourceById(id);
        return sampleResource;
    }

私のセットアップ:

  • .NET 4.0
  • MVC3
  • IIS 7.0

注:私は共有ホスティングプランを利用しているため、IIS7.0 aに直接アクセスできないため、web.configファイルを介して変更を加える必要があります。

4

1 に答える 1

0

サービスでトレースを有効にし、PUT または DELETE アクションを試行したときに 404 エラーが発生する理由を確認してください。

于 2012-01-19T09:56:49.550 に答える