This is the fourth post on a series about the new WCF Web API – Preview 4.
In the second post, I described how to create self hosted services. In this post, I’ll show how to host on IIS.
1. Create a empty ASP.NET web application and map a IIS site or virtual directory into it. On my development environment, I usually create a new site for each project and use the hosts file to map the site name to 127.0.0.1.
2. Ensure the following on the web.config
<!-- Ensure the UrlRoutingModule --> <system.webServer> <modules runAllManagedModulesForAllRequests="true"> <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </modules> </system.webServer> <!-- Enable ASP.NET compatibility --> <system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> </system.serviceModel>
The UrlRoutingModule is used to route the requests into the WCF runtime.
3. Add the following route map to the application start (global.asax)
public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { ... RouteTable.Routes.MapServiceRoute<TodoResource>("todos"); ... } }
where TodoResource is the resource class (service class) and “todos” is the base path.
The MapServiceRoute extension methods adds a ServiceRoute to the RouteTable.Routes collection. This ServiceRoute uses a host factory that will produce a HttpConfigurableServiceHost. This host derives from the new HttpServiceHost, introduced on a previous post.
The MapServiceRoute also accepts an IHttpHostConfigurationBuilder, which can be used to configure the service. This configuration model, also applicable to self-hosting scenarios, will be the subject of a future post.
Pingback: HTTP content classes « Pedro Félix’s shared memory
Hi, thank you. A couple of questions:
where TodoResource is the resource class (service class) and “todos” is the base path.
what is the “resource class”? “base path” of what?
What files must be deployed besides my project DLL?
Thanks!
Hi Steve, this post is related to WCF Web API, which was replaced by ASP.NET Web API. See http://ofps.oreilly.com/titles/9781449337711/ch_hosting.html for an in-depth description of Web API hosting
Oops, sorry. Thank you very much for the fast and excellent reply!