Recently I came across WCF service without SVC file and was wondering how to achieve this. This post teaches us how to create SVC less WCF service.
.SVC files are used to host WCF service in IIS.
Software Prerequisites
Operating System | Windows 7 |
IDE | Visual Studio 2012 |
Language | C# |
Web Server | IIS/ IIS Express |
Level | Basic knowledge of C# and Visual Studio 2012/ 2010 |
Also works on | Windows Server 2008 R2, Visual Studio 2010, IIS 7 |
Creating WCF Service without SVC File
- Create blank solution with name "
LearnWCF
" with appropriate location. - Add class library project with name "
WelcomeService
".
We are creating class library to understand service interface implementation better.
- Add DLL reference "
System.ServiceModel
", this provides classes related to the service model. We are one step closer making class library to WCF service. - Add an interface file "IWelcomeService.cs" to the project. Include "
System.ServiceModel
" namespace section and decorate the interface with [ServiceContract]
attribute. - Add method "
GreetWithMessage
" decorating with [OperationContract]
attribute. It accepts a string
parameter "name
" returning welcome message.
IWelcomeService Interface with Service & Operational Contracts
- Create a class file "WelcomeService.cs" which will implement the
IWelcomeService
interface and only returns formatted string. Here’s the code snippet in WelcomeService.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WelcomeService
{
public class WelcomeService : IWelcomeService
{
public string GreetWithMessage(string name)
{
return name + " Welcome to mithunvp.com !!";
}
}
}
ASP.NET Empty Web Site as Hosting Application for WCF
- Add ASP.NET Empty web site to the same solution with name "
WelcomeServiceHost
". Add Reference to the class library "WelcomeService
" created above. CodeProject - Let’s DEBUG this website to see that happens. This is because we don’t have hosting file in this empty web site and of course it's not configured to show directory structure.
ASP.NET hosting WCF doesn’t contain SVC file
This is the main agenda of the article – Creating WCF service without SVC file. The following image shows that <ServiceActivations>
is the main setting that enables to access the WCF service.
System.ServiceModel’s settings in Web.config to activate SVC file
- Update the ASP.NET site’s web.config with the below settings to make WCF service work without SVC:
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
<system.serviceModel>
<serviceHostingEnvironment >
<serviceActivations>
<add factory="System.ServiceModel.Activation.ServiceHostFactory"
relativeAddress="./WelcomeServiceHost/WelcomeService.svc"
service="WelcomeService.WelcomeService" />
</serviceActivations>
</serviceHostingEnvironment>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
- DEBUG or RUN Empty website to verify WCF is service ready to be consumed.
WCF service ready to be consumed with SVC link
System.ServiceModel
’s ServiceActivations
is responsible for creating WCF service without SVC file.
The post Creating WCF service without SVC file appeared first on Mithunvp.com.