IIS Hosting

Register ServiceStack ASP.NET HttpHandler

ServiceStack integrates with your existing ASP.NET Web Application by registering an ASP.NET HttpHandler used to route HTTP requests to ServiceStack. The configuration below supports both IIS/6.0 and Mono as well as IIS7+ new handler mappings under <system.webServer>:

Configure ServiceStack at / root path

Add this configuration in your Web.config to host ServiceStack at the / root path:

<!-- For IIS 6.0/Mono -->
<system.web>
  <httpHandlers>    
    <add path="*" type="ServiceStack.HttpHandlerFactory, ServiceStack" 
         verb="*"/>
  </httpHandlers>
</system.web>

<!-- For IIS 7.0+ -->
<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <handlers>
    <add path="*" name="ServiceStack.Factory" preCondition="integratedMode" 
         type="ServiceStack.HttpHandlerFactory, ServiceStack" 
         verb="*" resourceType="Unspecified" allowPathInfo="true" />
  </handlers>
</system.webServer>

Tip

If you want to host your webservice on a custom path to avoid conflicts with another web framework (eg ASP.Net MVC), see Run ServiceStack side-by-side with another Framework

INFO

Due to limitations in IIS 6 - host ServiceStack at a /custompath which must end with .ashx, e.g: path="api.ashx"

Configure ServiceStack at /api custom path

If you want to use ServiceStack together with an existing ASP.NET Web Framework, you can instead host ServiceStack at /api path with:

<location path="api">
  <system.web>
    <httpHandlers>
      <add path="*" type="ServiceStack.HttpHandlerFactory, ServiceStack" 
           verb="*"/>
    </httpHandlers>
  </system.web>

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
      <add path="*" name="ServiceStack.Factory" 
           type="ServiceStack.HttpHandlerFactory, ServiceStack" 
           verb="*" preCondition="integratedMode" 
           resourceType="Unspecified" allowPathInfo="true" />
    </handlers>
  </system.webServer>
</location>

To use ServiceStack together with ASP.NET MVC follow the steps in the Mvc integration docs.

Troubleshooting

Disable WebDAV to enable PUT and DELETE Verbs

If you are running IIS 7.5 you may need to disable the WebDAV module to enable PUT and DELETE verbs. You can do this globally through IIS or locally through a web.config.

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