After taking a few days to investigate I can make it work now. I would like to share my solution just in case anyone having a problem like me ;)
Codes in Controller.cs must be like below
using System;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Diagnostics;
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Controller
{
[OperationContract]
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.Wrapped,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
public int Add(int a, int b)
{
Debug.WriteLine("Adding....");
return a + b;
}
}
There is nothing changed in Default.aspx
And There is something must be specific in Web.config as below
<configuration>
.
.
.
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="WebScriptBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="WebScriptBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service name="Controller">
<endpoint address="" contract="Controller"
behaviorConfiguration="WebScriptBehavior"
binding="webHttpBinding"/>
</service>
</services>
</system.serviceModel>
</configuration>