我已将 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 文件进行更改。