sathish kumar

sathish kumar

  • NA
  • 14
  • 2.6k

WCF REST Service Not working Put method in Server

Jul 1 2014 7:29 AM
I have 2 application one Webapplication another one service application both hosted in same server. 
I want Save records in to DB So i called service from Jquery to WCF REST Service Using PUT method not working plz any help me slove th issues 

JS Code 
============
// Declarations
var varData;
var varContentType;
var varDataType;
var varProcessData;
//$.support.cors = true;
//$(document).ready(function () {
//  
//});


function getHeaders() {
    //btoa is a built in browser cmd for encode Base64
    return { 'Authorization': "Basic " + btoa("test:testpw") };
}


// Ajax Call
function CallService(sucessData) {
    $.ajax({
        headers: getHeaders(),
        type: varType, //GET or POST or PUT or DELETE verb
        url: varUrl, // Location of the service
        data: varData, //Data sent to server
        contentType: varContentType, // content type sent to server
        dataType: varDataType, //Expected data format from server
        processdata: varProcessData, //True or False
        crossDomain: true,
        timeout: 200000,
        success: sucessData,
        error: function (xhr) {// When Service call fails
            alert("Error: " + xhr.responseText);
            //alert('Error occured in Service Call');
        }
    });
}

function SaveBookAppoinment() 
{
    // Form the data structure to insert    
    var requestAppoinmentId = "0";
    var patientName = $('#txtPatientName').val();
    var appoinmentReason = $('#txtReason').val();
    var emailId = $("#txtEmail").val();
    var mobileNo = $("#txtMobile").val();
    var doctorId = $("#HTxtBookDoctorId").val();


    var doctorslottime = $("#HTxtDoctorSlotTime").val();
    // var slotDate = $("#HTxtslotDate").val();


    var Status = "1";


    // Book Tickets Table data
    var TblBookAppoinments = {
        //RequestAppoinmentId: requestAppoinmentId ,
        PatientName: patientName,
        AppoinmentReason: appoinmentReason,
        EmailId: emailId,
        MobileNo: mobileNo,
        DoctorId: doctorId,
        // AppointmentDate: slotDate,
        AppointmentTime: doctorslottime
    };


    var AppoinmentInfo = { bookAppoinmentData: TblBookAppoinments };


    varType = "PUT";
    varUrl = "http://192.18.11.10/webapi/Modules/DataInfoService.svc/BookAppoinment";
           
    varContentType = "application/json; charset=utf-8";
    varData = JSON.stringify(AppoinmentInfo);
    varDataType = "json";
    varProcessData = true;
    CallService(SaveData);
}


// PUT response
function SaveData(response) {


    var result = response.PutBookAppoinmentResult;
    if (response.PutBookAppoinmentResult == "Success") {
        alert('Thanks Register ,We Get back to you!!!');
        window.location = '/Modules/Default1.html';
    }
    else
    { alert('You Appoinment Not Confirm!!!'); }
}
   }

Service Application Code
====================
WebConfig code:
----------------
<?xml version="1.0"?>
<configuration>


  <system.serviceModel>
    <services>
      <service behaviorConfiguration="CallzillaDataInfoServiceBehavior" name="CallzilaService.Modules.CallzillaDataInfoService">
        <endpoint binding="webHttpBinding" bindingConfiguration="WebHttpBinding" contract="CallzilaService.Modules.ICallzillaDataInfoService"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
       
      </service>
    </services>


    <behaviors>
      <endpointBehaviors>
        <behavior name="CallzillaDataInfoServiceBehavior">
          <webHttp helpEnabled="true" />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="CallzillaDataInfoServiceBehavior">
          <serviceMetadata httpGetEnabled="true"  httpsGetEnabled="true"/>
          <serviceDebug httpHelpPageEnabled="true" httpsHelpPageEnabled="false" includeExceptionDetailInFaults="false" />
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
          <!--<serviceAuthorization serviceAuthorizationManagerType="CallzilaService.MyServiceAuthorizationManager, CallzilaService" />-->
         
        </behavior>
      </serviceBehaviors>
    </behaviors>


    <bindings>
      <webHttpBinding>
        <binding name="WebHttpBinding" crossDomainScriptAccessEnabled="true">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="None" />
          </security>
        </binding>
        <binding
          name="StreamBinding"
          transferMode="Streamed"
          maxReceivedMessageSize="2147483647"
          openTimeout="12:00:00"
          receiveTimeout="12:00:00"
          closeTimeout="12:00:00"
          sendTimeout="12:00:00"
          maxBufferSize="2147483647">
          <readerQuotas  maxDepth="2147483647"
                         maxStringContentLength="2147483647"
                         maxArrayLength="2147483647"
                         maxBytesPerRead="2147483647"
                         maxNameTableCharCount="2147483647"/>
          <security mode="None" />
        </binding>
        <binding name="crossDomain" crossDomainScriptAccessEnabled="true" />
      </webHttpBinding>
    </bindings>


    <!-- Add Code fore CORS -->
    <!-- this have no affect for crossDomainScriptAccessEnabled (jsonp) because custom endpoints use binding instead -->
    <standardEndpoints>
      <webHttpEndpoint>
        <standardEndpoint name="" helpEnabled="true" crossDomainScriptAccessEnabled="true"/>
      </webHttpEndpoint>
    </standardEndpoints>
    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"  />
  </system.serviceModel>




  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpRuntime maxRequestLength="2097150" useFullyQualifiedRedirectUrl="true"/>  
    <!--<httpModules>
      <add name="ServicesModule" type="CallzilaService.Modules.CallzillaDataInfoService, CallzilaService.Modules"/>
    </httpModules>-->


  </system.web>


  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="ServicesModule" type="CallzilaService.Modules.CallzillaDataInfoService,CallzilaService.Modules"/>
    </modules>
    <directoryBrowse enabled="true"/>
  </system.webServer>
</configuration>

ICallzillaDataInfoService Code
============
using System.Collections.Generic;
using System.ComponentModel;
using System.ServiceModel;
using System.ServiceModel.Web;
using Common;
using System.ServiceModel.Description;
using System;
using Common.Modules;


namespace CallzilaService.Modules
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "ICallzillaDataInfoService" in both code and config file together.
    [ServiceContract]
    public interface ICallzillaDataInfoService
    {
        #region PUT - Insert/Update Category


        [OperationContract]
        [Description("Create a new Patient Details with given data")]
        [WebInvoke(Method = "PUT", UriTemplate = "BookAppoinment", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
        string PutBookAppoinment(PatientDetailsDataContract bookAppoinmentData);


        #endregion      


       
    }
}

CallzillaDataInfoService.svc.cs Code
========================== 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using Common;
using ManagerLayer;
using Common.Modules;


namespace CallzilaService.Modules
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "CallzillaDataInfoService" in code, svc and config file together.
    public class CallzillaDataInfoService : ICallzillaDataInfoService
    {


        #region PUT - Insert/Update BookAppoinment


        public string PutBookAppoinment(PatientDetailsDataContract bookAppoinmentData)
        {
            return (new BusinessManagerCallzila()).PutBookAppoinmentData(bookAppoinmentData);
        }


        #endregion


    }
}

Data Contract Class file code
============================

  #region Create the Patient Table


    [DataContract]
    public class PatientDetailsDataContract
    {
        [DataMember]
        public Int64 RequestAppoinmentId { get; set; }
        [DataMember]
        public String PatientName { get; set; }
        [DataMember]
        public String AppoinmentReason { get; set; }
        [DataMember]
        public String EmailId { get; set; }
        [DataMember]
        public String MobileNo { get; set; }
        [DataMember]
        public Int64 DoctorId { get; set; }
        [DataMember]
        public bool Status { get; set; }
        [DataMember]
        public DateTime AppointmentDate { get; set; }
        [DataMember]
        public String AppointmentTime { get; set; }
    }


    #endregion









Answers (1)