Глаголы Cassini и IISExpress PUT / DELETE вызывают код HTP 405 - PullRequest
2 голосов
/ 19 мая 2011

У меня сейчас проблема с запуском приложения Jessica через VS2010 и Cassini. Код ниже - это то, что я выполняю, однако, когда я пытаюсь использовать глаголы PUT или DELETE, я получаю ответ 405 Method Not Allowed. Я попробовал ответ, предложенный в ASP.NET MVC получил ошибку 405 при запросе HTTP DELETE? , но у меня это не сработало. Я также скопировал в мой минимальный web.config

<?xml version="1.0"?>

<configuration>

    <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
</configuration>

Код

public class UserModule : JessModule
{
    public UserModule() : base("/user")
    {
        Get("/", r => View("list", UserRepository.GetAllUsers()));

        Post("/", r =>
        {
            AddUser(new User { EmailAddress = r.EmailAddress, Name = r.Name });
            return Response.AsRedirect("/user");
        });

        Get("/edit/:id", r => View("edit", UserRepository.GetUser(int.Parse(r.id))));

        Put("/:id", r =>
        {
            EditUser(r.id, new User { EmailAddress = r.EmailAddress, Name = r.Name });
            return Response.AsRedirect("/user");
        });

        Delete("/:id", r =>
        {
            DeleteUser(r.id);
            return Response.AsRedirect("/user");
        });
    }
}

Ответы [ 2 ]

2 голосов
/ 19 мая 2011

Я почти уверен, что так было всегда, у сервера разработки ASP.NET есть свои ограничения. Я бы порекомендовал получить VS2010 SP1 и компоненты IIS Express через веб-установщик платформы. Это даст вам тот же опыт разработки без излишеств Кассини.

0 голосов
/ 19 мая 2011

Глагол put должен работать с IIS Express, и для этого вам нужно включить WebDAV (IIS Express устанавливает WebDAV, но не включает его по умолчанию). А также WebDAV не работает с анонимной аутентификацией. Поэтому вам необходимо включить WebDAV, отключить анонимную аутентификацию и включить аутентификацию Windows. Выполните следующие шаги;

1.Найдите следующие три записи в файле applicationhost.config, расположенном в профиле пользователя (% userprofile% \ documents \ iisexpress \ config \ applicationhost.config), и удалите их комментарии (по умолчанию они комментируются)

<add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />
<add name="WebDAVModule" />
<add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" />

Примечание. Выше трех элементов нет в одном месте в файле конфигурации.

2.Добавить следующую запись конфигурации в конец файла applicationhost.config (непосредственно перед элементом '</configuration>')

<location path="WebSite1"> 
    <system.webServer>
        <security>
            <authentication>
            <windowsAuthentication enabled="true" useKernelMode="false">
                    <providers>
                        <clear />
                        <add value="Negotiate" />
                        <add value="NTLM" />
                    </providers>
                </windowsAuthentication>
                <anonymousAuthentication enabled="true" />
            </authentication>
        </security>
        <webdav>
            <authoring enabled="true" />
            <authoringRules>
                <add users="*" path="*" access="Read, Write, Source" />
            </authoringRules>
        </webdav>
    </system.webServer>
</location>

Примечание. В приведенной выше записи конфигурации замените «WebSite1» именем вашего сайта

3. Перезагрузить IIS Express

4. Теперь попробуйте PUT / DELETE запрос

...