404 ошибки для запросов PUT и DELETE на развернутой службе WCF RESTful - PullRequest
2 голосов
/ 19 января 2012

Я развернул веб-сервис MVC3 и WCF как одно приложение. Оба работают как положено. Запросы GET и POST работают отлично, но запросы PUT и DELETE возвращают 404 ошибки. Они работают хорошо на местном уровне. Первоначально он запрашивал имя пользователя / пароль для запросов PUT / DELETE.

Вот мой конфиг WebServer из моего файла web.config

    <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.

1 Ответ

0 голосов
/ 19 января 2012

Включите Трассировка в вашем сервисе и узнайте, почему вы получаете ошибку 404 при попытке выполнить действие PUT или DELETE.

...