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

4

1 回答 1

0

在您的服务上启用跟踪,看看为什么您在尝试执行 PUT 或 DELETE 操作时会收到 404 错误。

于 2012-01-19T09:56:49.550 回答