I have created a restful service and trying to call it from webpage.
but i am getting error code 405.
the same rest service call works fine with soap UI
below are the details of wevservice and the jquery call
webservice api
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json,
UriTemplate = "PostMethodWithCustomerArray")]
List PostMethodWithCustomerArray(List dataStrings);
Webservice code
public List<CustomerWithArray> PostMethodWithCustomerArray(List<CustomerWithArray> dataStrings)
{
return dataStrings;
}
ajax call
var UrlPostMethodWithCustomerArray = "http://localhost:29745/RESTfulService.svc/PostMethodWithCustomerArray";
var customerWithArray = [{ "Name": "Dipak Godbole", "Age": "27", "HumanType": "1", "strArray": ["11", "22"] },
{ "Name": "Madan Chapa", "Age": "19", "HumanType": "3", "strArray": ["111", "222"] },
{ "Name": "Raju Rohida", "Age": "55", "HumanType": "2", "strArray": ["1111", "2222"] }];
$(document).ready(function () {
$.ajax({
cache: false,
type: "POST", //GET or POST or PUT or DELETE verb
url: UrlPostMethodWithparam, // Location of the service
data: JSON.stringify(customerWithArray),
dataType: "json", //Expected data format from server
contentType: "application/json; charset=utf-8",
success: function (msg) {//On Successfull service call
$.each(msg, function (index, item) {
alert(item.Name + item.HumanType);
});
//alert(msg);
},
error: ServiceFailed// When Service call fails
});
});
Web Config sections
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.serviceModel>
<services>
<service name="TrialRESTService.RESTfulService" behaviorConfiguration="svcbehaviour">
<endpoint address=""
binding="webHttpBinding"
contract="TrialRESTService.IRESTfulService"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="svcbehaviour">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior>
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
To browse web app root directory during debugging, set the value below to true.
Set to false before deployment to avoid disclosing web app folder information.
-->
<directoryBrowse enabled="true"/>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="POST,GET"/>
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
any help on this????
Error using Google crome developer tools
OPTIONS
http://localhost:29745/RESTfulService.svc/PostMethodWithCustomerArray
405 (Method Not Allowed) jquery-1.8.2.min.js:19
XMLHttpRequest cannot load http://localhost:29745/RESTfulService.svc/PostMethodWithCustomerArray. Invalid HTTP status code 405 Default.aspx:1
Best Answer
This is incorrect for your data payload (not valid json):
Instead you should have
You should check out this SO post. It has to do with cross domain issues: Post data to RESTful Invalid HTTP status code 405