Hi,
I have lot tried post call to wcf service but its not working,but get call is working fine.here's code:-
WCF IService->
[ServiceContract]
public interface IService
{
[OperationContract]
void DoWork();
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "/TestMethod", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string TestMethod();
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/TestMethod_FORPOST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string TestMethod_FORPOST(string param1);
}
Wcf-Service.svc.cs:-
[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class Service : IService
{
public void DoWork()
{
}
public string TestMethod()
{
return "Success";
}
public string TestMethod_FORPOST(string param1)
{
return "SuccessFullyPosted";
}
Web Confi:- <!--CustomSettingsForWCF-->
<system.servicemodel>
<bindings>
<webhttpbinding>
<binding name="webBinding" maxreceivedmessagesize="2147483647" crossdomainscriptaccessenabled="true">
maxBufferSize="2147483647" maxBufferPoolSize="2147483647"
transferMode="Streamed">
<readerquotas maxstringcontentlength="2147483647" maxarraylength="2147483647" />
<!--<security mode="Transport">
<transport>
<extendedprotectionpolicy policyenforcement="Never" />
</transport>
</security>-->
</binding>
</webhttpbinding>
</bindings>
<services>
<service behaviorconfiguration="Service" name="WCF_TEST_APPLICATION_WITH_AJAXCALL.Service">
<endpoint address="" behaviorconfiguration="webEndpoint">
binding="webHttpBinding" bindingConfiguration="webBinding" name="web"
bindingNamespace="" contract="WCF_TEST_APPLICATION_WITH_AJAXCALL.IService" />
</endpoint></service>
</services>
<behaviors>
<endpointbehaviors>
<behavior name="webEndpoint">
<webhttp helpenabled="true" defaultbodystyle="Wrapped" defaultoutgoingresponseformat="Json" />
</behavior>
</endpointbehaviors>
<servicebehaviors>
<behavior name="Service">
<servicemetadata httpgetenabled="true" />
<servicedebug includeexceptiondetailinfaults="false" />
<!--<userequestheadersformetadataaddress />-->
</behavior>
</servicebehaviors>
</behaviors>
<servicehostingenvironment aspnetcompatibilityenabled="true" multiplesitebindingsenabled="true" />
</system.servicemodel>
<system.webserver>
<modules runallmanagedmodulesforallrequests="true" />
</system.webserver>
Another application throughout Call method:-
var WCFurl = "http://localhost:49212/Service.svc/TestMethod_FORPOST";
var datar = { param1: "abc" };
alert("SecondCall");
$.ajax({
type: "POST",
url: WCFurl,
data: JSON.stringify(datar),
dataType: "json",
beforeSend: function (xhr) {
xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
},
success: function (msg) {
alert("success");
},
error: function (xhr, status, error) {
alert(xhr.status + " " + status + " " + error);
},
complete: function (data) {
alert(JSON.stringify(data));
}
});
above code is working fine for get call but not for post call, please give me suggestion, how can i do with post call?
-Sanjiv