It’s part 3 in the series of WCF Hosting Tutorials and we are going to implement how we can host a WCF Service in IIS (version 5 or 6)? We have already implemented the following in the series:
Microsoft introduced WCF (Windows Communication Foundation) in .NET Framework v 3.0 with lots of exciting features but the most exciting feature among all was, how it’s different from ASMX services or ASP.NET Web Services? or what’ additional things it provides as compared to ASMX services?
Primary difference is that ASMX or ASP.NET web service is designed to send and receive messages using SOAP over HTTP only. While WCF can exchange messages using any format (SOAP is default) over any transport protocol (HTTP, TCP/IP, MSMQ, NamedPipes, etc). Another WCF Tutorial has detailed discussion on WCF Vs ASMX here.
So, if we are hosting a WCF Service in IIS (version 5 or 6), only HTTP option is available as transport protocol. In later versions of IIS (Internet Information Services), we an use any other protocol (TCP/IP, MSMQ, NamedPipes, etc.) as transport protocol.
Practical Guide to WCF RESTful Service
As we already know that in order to host a WCF Service, we need a managed process. In case of IIS (Internet Information Services), it provides the host process and launches the process as the first request reaches server.
Now, let’s first create a WCF service and later host in IIS.
Create a StudentService Class Library
We have already created a StudentService
Class Library project while implementing WCF Self Hosting Tutorial. In order to make things consistent here, we will use the same service, so please go through step 1 of that WCF Tutorial for creating a WCF Service.
WCF Hosting in IIS
So in order to host our WCF Service in IIS, follow the simple step by step approach.
- Add a Website to our Solution. Choose “ASP.NET Empty Web Site” template. For Web location, choose “HTTP” instead of “File System”, provide the path and press “OK” button.
- Add Reference of
StudentService
project to our website, i.e. StudentIISHost
.
- Add Reference of
System.ServiceModel
to website. - Add a new .svc file to our website project as:
In the above code, we are pointing Service
to StudentService
in ServiceHost
.
- Updated configuration for
System.ServiceModel
in web.config will be as follows:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="StudentServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="StudentServiceBehavior"
name="StudentService.StudentService">
<endpoint address="http://localhost/StudentIISHost/MyStudentHost.svc"
binding="wsHttpBinding"
contract="StudentService.IStudentService">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
</service>
</services>
</system.serviceModel>
- Access the hosted WCF Service, i.e.,
StudentService
using following path:
http:
Hopefully, this WCF Tutorial will help to understand implementation for hosting a WCF Service in IIS (Internet Information Service).
Other Related Articles
The post WCF Hosting in IIS Simplified appeared first on WCF Tutorial.