部署的WCF RESTful服务上的PUT和DELETE请求有404个错误

时间:2012-01-19 07:07:23

标签: wcf rest iis-7 http-put http-delete

我已将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,因此我需要通过web.config文件进行更改。

1 个答案:

答案 0 :(得分:0)

在您的服务上启用 Tracing ,并了解在尝试进行PUT或DELETE操作时出现404错误的原因。