IndexCreation.CreateIndexes - The remote server returned an error: (405) Method Not Allowed.

969 views
Skip to first unread message

Chris Swain

unread,
Jul 25, 2010, 4:21:28 PM7/25/10
to ravendb
First, let me say, I love this new functionality.
"IndexCreation.CreateIndexes(..)" works like a charm if I run the
debug server and call it from my ASP.NET MVC App_Start method.
However, when I switched over to IIS Server mode for Raven, I started
getting the "The remote server returned an error: (405) Method Not
Allowed" error when the CreateIndexes method is called.

Is there some security setting I need to change in my Raven IIS
service site to get this working?

Ayende Rahien

unread,
Jul 25, 2010, 5:53:02 PM7/25/10
to rav...@googlegroups.com

    <add key="Raven/AnonymousAccess" value="All"/>

Chris Swain

unread,
Jul 25, 2010, 6:49:47 PM7/25/10
to ravendb
I already had that in my web.config for my Raven IIS service site.
Here is the whole config file:

<configuration>
<appSettings>
<add key="Raven/DataDir" value="~\Data" />
<add key="Raven/AnonymousAccess" value="All" />
</appSettings>

<system.webServer>
<handlers>
<add name="All" path="*" verb="*"
type="Raven.Web.ForwardToRavenRespondersFactory, Raven.Web" />
</handlers>
</system.webServer>
</configuration>

Here is the stack trace for the error:

at Raven.Client.Client.HttpJsonRequest.ReadStringInternal(Func`1
getResponse)
at Raven.Client.Client.HttpJsonRequest.ReadResponseString()
at Raven.Client.Client.ServerClient.PutIndex(String name,
IndexDefinition definition, Boolean overwrite)
at
Raven.Client.Indexes.AbstractIndexCreationTask.Execute(IDocumentStore
documentStore)
at
Raven.Client.Indexes.IndexCreation.CreateIndexes(CompositionContainer
catalogToGetnIndexingTasksFrom, IDocumentStore documentStore)
at RavenMvcApplication.MvcApplication.Application_Start() in C:
\research\2010\RavenMvcApplication\RavenMvcApplication
\Global.asax.cs:line 90
> > service site to get this working?- Hide quoted text -
>
> - Show quoted text -

Ayende Rahien

unread,
Jul 25, 2010, 6:53:16 PM7/25/10
to rav...@googlegroups.com
What is the fiddler trace here?

Chris Swain

unread,
Jul 25, 2010, 7:32:03 PM7/25/10
to ravendb
HTTP/1.1 405 Method Not Allowed
Cache-Control: private
Allow: GET, HEAD, OPTIONS, TRACE
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Sun, 25 Jul 2010 23:29:48 GMT
Content-Length: 5768

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>IIS 7.5 Detailed Error - 405.0 - Method Not Allowed</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana,Arial,Helvetica,sans-
serif;background:#CBE1EF;}
code{margin:0;color:#006600;font-size:1.1em;font-weight:bold;}
.config_source code{font-size:.8em;color:#000000;}
pre{margin:0;font-size:1.4em;word-wrap:break-word;}
ul,ol{margin:10px 0 10px 40px;}
ul.first,ol.first{margin-top:5px;}
fieldset{padding:0 15px 10px 15px;}
.summary-container fieldset{padding-bottom:5px;margin-top:4px;}
legend.no-expand-all{padding:2px 15px 4px 10px;margin:0 0 0 -12px;}
legend{color:#333333;padding:4px 15px 4px 10px;margin:4px 0 8px
-12px;_margin-top:0px;
border-top:1px solid #EDEDED;border-left:1px solid #EDEDED;border-
right:1px solid #969696;
border-bottom:1px solid #969696;background:#E7ECF0;font-
weight:bold;font-size:1em;}
a:link,a:visited{color:#007EFF;font-weight:bold;}
a:hover{text-decoration:none;}
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;}
h3{font-size:1.4em;margin:10px 0 0 0;color:#CC0000;}
h4{font-size:1.2em;margin:10px 0 5px 0;
}#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-
family:"trebuchet MS",Verdana,sans-serif;
color:#FFF;background-color:#5C87B2;
}#content{margin:0 0 0 2%;position:relative;}
.summary-container,.content-container{background:#FFF;width:96%;margin-
top:8px;padding:10px;position:relative;}
.config_source{background:#fff5c4;}
.content-container p{margin:0 0 10px 0;
}#details-left{width:35%;float:left;margin-right:2%;
}#details-right{width:63%;float:left;overflow:hidden;
}#server_version{width:96%;_height:1px;min-height:1px;margin:0 0 5px
0;padding:11px 2% 8px 2%;color:#FFFFFF;
background-color:#5A7FA5;border-bottom:1px solid #C1CFDD;border-top:
1px solid #4A6C8E;font-weight:normal;
font-size:1em;color:#FFF;text-align:right;
}#server_version p{margin:5px 0;}
table{margin:4px 0 4px 0;width:100%;border:none;}
td,th{vertical-align:top;padding:3px 0;text-align:left;font-
weight:bold;border:none;}
th{width:30%;text-align:right;padding-right:2%;font-weight:normal;}
thead th{background-color:#ebebeb;width:25%;
}#details-right th{width:20%;}
table tr.alt td,table tr.alt th{background-color:#ebebeb;}
.highlight-code{color:#CC0000;font-weight:bold;font-style:italic;}
.clear{clear:both;}
.preferred{padding:0 5px 2px 5px;font-
weight:normal;background:#006633;color:#FFF;font-size:.8em;}
-->
</style>

</head>
<body>
<div id="header"><h1>Server Error in Application "RAVEN"</h1></div>
<div id="server_version"><p>Internet Information Services 7.5</p></
div>
<div id="content">
<div class="content-container">
<fieldset><legend>Error Summary</legend>
<h2>HTTP Error 405.0 - Method Not Allowed</h2>
<h3>The page you are looking for cannot be displayed because an
invalid method (HTTP verb) is being used.</h3>
</fieldset>
</div>
<div class="content-container">
<fieldset><legend>Detailed Error Information</legend>
<div id="details-left">
<table border="0" cellpadding="0" cellspacing="0">
<tr class="alt"><th>Module</th><td>WebDAVModule</td></tr>
<tr><th>Notification</th><td>MapRequestHandler</td></tr>
<tr class="alt"><th>Handler</th><td>All</td></tr>
<tr><th>Error Code</th><td>0x00000000</td></tr>

</table>
</div>
<div id="details-right">
<table border="0" cellpadding="0" cellspacing="0">
<tr class="alt"><th>Requested URL</th><td>http://chris-pc:8181/
indexes/RavenRolesIndex</td></tr>
<tr><th>Physical Path</th><td>C:\Sites\RavenDB\Web\indexes
\RavenRolesIndex</td></tr>
<tr class="alt"><th>Logon Method</th><td>Anonymous</td></tr>
<tr><th>Logon User</th><td>Anonymous</td></tr>
<tr class="alt"><th>Failed Request Tracing Log Directory</
th><td><a href="file://C:\inetpub\logs\FailedReqLogFiles">C:\inetpub
\logs\FailedReqLogFiles</a></td></tr>
</table>
<div class="clear"></div>
</div>
</fieldset>
</div>
<div class="content-container">
<fieldset><legend>Most likely causes:</legend>
<ul> <li>The request sent to the Web server used an HTTP verb that
is not allowed by the module configured to handle the request.</li>
<li>A request was sent to the server that contained an invalid HTTP
verb.</li> <li>The request is for static content and contains an HTTP
verb other than GET or HEAD.</li> <li>A request was sent to a virtual
directory using the HTTP verb POST and the default document is a
static file that does not support HTTP verbs other than GET or HEAD.</
li> </ul>
</fieldset>
</div>
<div class="content-container">
<fieldset><legend>Things you can try:</legend>
<ul> <li>Verify the list of verbs enabled for the module handler
this request was sent to, and ensure that this verb should be allowed
for the Web site.</li> <li>Check the IIS log file to see which verb
is not allowed for the request.</li> <li>Create a tracing rule to
track failed requests for this HTTP status code. For more information
about creating a tracing rule for failed requests, click <a
href="http://go.microsoft.com/fwlink/?LinkID=66439">here</a>. </li> </
ul>
</fieldset>
</div>


<div class="content-container">
<fieldset><legend>Links and More Information</legend>
This error means that the request sent to the Web server contained
an HTTP verb that is not allowed by the configured module handler for
the request.
<p><a href="http://go.microsoft.com/fwlink/?
LinkID=62293&amp;IIS70Error=405,0,0x00000000,7600">View more
information &raquo;</a></p>

</fieldset>
</div>
</div>
</body>
</html>
> > > - Show quoted text -- Hide quoted text -

Chris Swain

unread,
Jul 25, 2010, 8:35:13 PM7/25/10
to ravendb
Above was the raw response. This is the raw request:

PUT http://chris-pc:8181//indexes/RavenRolesIndex HTTP/1.1
Content-Type: application/json; charset=utf-8
Host: chris-pc:8181
Content-Length: 184
Expect: 100-continue

{"Map":"docs.RavenRoles\r\n\t.Select(role => new {Name = role.Name,
ApplicationName =
role.ApplicationName})","Reduce":null,"IsMapReduce":false,"Stores":
{},"Indexes":{},"Analyzers":{}}

Ayende Rahien

unread,
Jul 25, 2010, 8:43:16 PM7/25/10
to rav...@googlegroups.com
What is looks like is that IIS itself is blocking the request.
I'll need to dig into that to figure out where exactly IIS defines allowed method 

Daniel Cazzulino

unread,
Jul 26, 2010, 8:39:46 AM7/26/10
to rav...@googlegroups.com

Make sure webdav extensions are not enabled for that website. I faces that issue too.

from android nexus1

Chris Swain

unread,
Jul 26, 2010, 9:38:29 AM7/26/10
to ravendb
I checked, and the webdav extensions are already disabled on my raven
service web site.

On Jul 26, 5:39 am, Daniel Cazzulino <k...@clariusconsulting.net>
wrote:
> Make sure webdav extensions are not enabled for that website. I faces that
> issue too.
>
> from android nexus1
>
> On Jul 25, 2010 9:43 PM, "Ayende Rahien" <aye...@ayende.com> wrote:
>
>
>
> > What is looks like is that IIS itself is blocking the request.
> > I'll need to dig into that to figure out where exactly IIS defines allowed
> > method
>
> > On Mon, Jul 26, 2010 at 3:35 AM, Chris Swain <chrisasw...@gmail.com>
> ...
>
> read more »- Hide quoted text -

Ayende Rahien

unread,
Aug 3, 2010, 5:23:27 AM8/3/10
to rav...@googlegroups.com
Were you able to resolve this?

Chris Swain

unread,
Aug 3, 2010, 9:51:05 AM8/3/10
to ravendb
No luck yet. Were you able to find anything in IIS that would let me
tell it not to block the request?

Ayende Rahien

unread,
Aug 11, 2010, 3:59:57 AM8/11/10
to ravendb
No, I can't reproduce it, either

Chris Swain

unread,
Sep 26, 2010, 6:04:26 PM9/26/10
to ravendb
Sorry this took a while for me to get around to solving, but I finally
figured out the solution. I had to remove the WebDAV module from my
ASP.NET MVC site. Apparently there are issues with WebDAV and REST
based communications on IIS 7.5. Here is how I removed it using my
Web.Config file:

<system.webServer>
...
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
</system.webServer>

Now my ASP.NET MVC 3 root site can access the RavenDB virtual sub
application without causing the (405) Method Not Allowed error.

In case anyone is interested, I've written a custom Membership and
Roles provider that uses RavenDB as the store.

Ayende Rahien

unread,
Sep 26, 2010, 8:02:29 PM9/26/10
to rav...@googlegroups.com
a) It is great that you found the error.
b) Is it something that we need to add to the default web.config that comes with the Raven Web dist?
c) Is the custom membership provider available?

Chris Swain

unread,
Sep 27, 2010, 1:56:29 PM9/27/10
to ravendb
The WebDAV module doesn't need to be removed from the RavenDB web
site. You need to add the line to the web.config of your ASP.NET MVC
site that will be using the Raven.Client.Lightweight.dll to connect to
the RavenDB web site. It might be helpful to document the need to
remove the WebDAV module from your ASP.NET MVC site in order to access
a RavenDB web site. But I leave that up to you. This forum is
searchable, so anyone experiencing the same problem should come across
this posting.

I have a C# Library project created that implements the
RavenDBMembershipProvider/RavenDBRoleProvider and related classes and
repositories. I could send you that code along with a zipped up copy
of the solution containing the MVC3 web app. Email me if you want me
to send you the code along with an explanation of how I've setup the
solution locally with a RavenDB sub-application. Disclaimer: This was
put together fairly quick and thus has no tests. I've tested it
lightly by using the Web Site Administration Tool that comes with
Visual Studio, but it needs more work.

Also, I'd like to modify the code to take advantage of the new
ConnectionStringName property on the DocumentStore.

If anyone has previously written an ASP.NET MVC 2+ User/Roles
Administration tool that I could deploy in my Admin site in production
and would be willing to give up the code, I would love to get my hands
on it. Otherwise, I'll have to write my own.
Reply all
Reply to author
Forward
0 new messages