我目前在通过VS2010和Cassini运行Jessica应用程序时遇到问题。下面的代码是我正在运行的,但是当我尝试使用PUT或DELETE动词时,我得到405 Method Not Allowed响应。我尝试了ASP.NET MVC got 405 error on HTTP DELETE request?建议的答案,但这对我不起作用。我也复制了我的最小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");
});
}
}
答案 0 :(得分:2)
我很确定它总是那样,ASP.NET开发服务器有其局限性。我建议通过Platform Web Installer获取VS2010 SP1和IIS Express组件。如果没有卡西尼号的怪癖,它将为您提供相同的开发体验。
答案 1 :(得分:0)
Put动词应该与IIS Express一起使用,为此您需要启用WebDAV(IIS Express安装WebDAV但默认情况下不启用它)。并且WebDAV也不能与匿名身份验证一起使用。因此,您需要启用WebDAV,禁用匿名身份验证并启用Windows身份验证。请按照以下步骤操作;
1.找到位于用户配置文件(%userprofile%\ documents \ iisexpress \ config \ applicationhost.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.Restart IIS Express
4.现在尝试PUT / DELETE请求