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ファイルを介して変更を加える必要があります。