2011-05-19 4 views
2

J'ai actuellement un problème en cours d'exécution d'une application Jessica via VS2010 et Cassini. Le code ci-dessous est ce que je suis en train de courir mais quand j'essaie d'utiliser les verbes PUT ou DELETE, j'obtiens une réponse 405 Méthode non autorisée. J'ai essayé la réponse proposée au ASP.NET MVC got 405 error on HTTP DELETE request? mais cela n'a pas fonctionné pour moi. J'ai aussi copié dans mon web.config minimalCassini et IISExpress PUT/DELETE Verbs cause 405 Code Http

<?xml version="1.0"?> 

<configuration> 

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

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

Code

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"); 
     }); 
    } 
} 
+0

Vous trouverez peut-être ce bit d'information intresting ainsi h ttp: //ravendb.net/faq/405-method-not-allowed –

+0

Oui c'était la réponse suggérée à la question que j'ai liée ci-dessus. Cela n'a pas fonctionné. –

Répondre

2

Je suis sûr qu'il a toujours été comme ça, le serveur de développement ASP.NET a ses limites. Je recommande d'obtenir VS2010 SP1 et les composants IIS Express via le programme d'installation Web Platform. Il vous donnera la même expérience de développement sans les caprices de Cassini.

+0

Nope même problème avec IIS Express. Méthode Non Autorisée. –

+0

Est-ce que les mappages par défaut n'autorisent que GET et POST? –

+0

Je ne peux pas utiliser WebDAV sur un serveur standard 2008. Essayé tous les messages sur SO et la faute du serveur. – FlavorScape

0

Mettre verbe devrait fonctionner avec IIS Express et pour cela vous devez activer WebDAV (IIS Express installe WebDAV mais il ne l'active pas par défaut). Et aussi WebDAV ne fonctionne pas avec l'authentification anonyme. Vous devez donc activer WebDAV, désactiver l'authentification anonyme et activer l'authentification Windows. Suivez les étapes ci-dessous;

1.Find après trois entrées dans le fichier applicationhost.config situé dans le profil utilisateur (% des documents userprofile% \ examples \ iisexpress \ config \ applicationHost.config) et non les commenter (par défaut, ils sont commentés)

<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" /> 

Remarque: Au-dessus de trois éléments ne se trouvent pas dans le fichier de configuration.

2.Ajoutez suite à l'entrée de configuration à la fin du fichier applicationhost.config (juste avant l'élément '</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> 

Note: Dans l'entrée de configuration ci-dessus remplacer 'WebSite1' avec votre nom de site

3.Redémarrez IIS express

4.Now essayez PUT/DELETE demande

+0

Un rapide google du sujet révèle que WebDAV ne devrait pas être utilisé, et est en fait causant des problèmes et je le conseillerais contre. Il s'agit probablement d'un problème de configuration simple qui doit être effectué pour autoriser plus de verbes http par défaut. –

+0

pourquoi WebDAV ne doit pas être utilisé? pourriez-vous partager le lien qui conseille de ne pas l'utiliser. Je crois qu'il n'y a pas de gestionnaire par défaut dans IIS pour le verbe PUT! – vikomall

+0

Voir ce fil http://forums.iis.net/t/1166025.aspx et celui-ci http://forums.iis.net/t/1163441.aspx, ils vont explicitement dans les détails sur la façon dont WebDAV est le coupable –

Questions connexes