Click here to Skip to main content
Click here to Skip to main content

Tagged as

Troubleshooting an Issue With Calling an asmx Web Service in SharePoint 2010 through jQuery

, 17 Apr 2014
Rate this:
Please Sign up or sign in to vote.
Here is our tip on how to troubleshoot an issue with calling asmx web service in SharePoint 2010 through jQuery

There are several issues that can happen while migrating SharePoint from one version to another. Here is our tip on how to troubleshoot an issue with calling asmx web service in SharePoint 2010 through jQuery.

After migration of a SharePoint 2007 application to SharePoint 2010 our jQuery scripts that communicate with ASMX web services suddenly stopped working. We got the error “500 Internal Server Error”. The scripts looked as follows:

$.ajax({
  type: "POST",
  url:  "http://someserver/someapp/_layouts/Services/Products.asmx/GetProductByCountry",

  data:        JSON.stringify({ countryCode: "USA" }),
  dataType:    "json",
  contentType: 'application/json; charset=utf-8',
  context:     this,
 
  success: function (data) {
             alert(data.d);
           },
  error:   function (XMLHttpRequest, textStatus, errorThrown) {
             alert(textStatus);
           }
});

Note: The JSON object mentioned in the script is defined in the json2.js available at http://www.json.org.

This issue can be solved by adding an appropriate <webServices> section to the web.config of SharePoint application (in our case it’s located at C:\inetpub\wwwroot\wss\VirtualDirectories\80).

So, find the global <system.web> section in your web.config and make changes so that the result looks like this:

<system.web>
  <webServices>
    <protocols>
      <add name="HttpGet" />
      <add name="HttpPost" />
    </protocols>
  </webServices>
...
</system.web>

However, from the security standpoint such solution is not ideal as it allows external access through the HTTP-GET and HTTP-POST messaging protocols to all of your XML web services. So, it’s better to specify the access protocols for each web service separately, not affecting other ones. The <location> element added to the root <configuration> element provides us with this capability. The sample below defines the protocols for accessing the web service reachable by the specified path:

<configuration>
...
  <location path="_layouts/Services/Products.asmx">
    <system.web>
      <webServices>
        <protocols>
          <add name="HttpGet"/>
          <add name="HttpPost"/>
        </protocols>
      </webServices>
    </system.web>
  </location>
...
</configuration>

Note that the _layouts virtual directory is available as a subfolder of every SharePoint Web site. So if you want to limit web service usage by only one SharePoint Web site, specify the path as follows: someapp/_layouts/Services/Products.asmx.

PS Here is a good article about how to create a custom web service in SharePoint 2010.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

EastBancTech
EastBancTechnologies
United States United States
EastBanc Technologies is a full service software development company based in Washington, DC. http://www.eastbanctech.com/
We provide custom solutions in the areas of Content Management and Portals, Identity Management, Mobile, Cloud and Development Operations, Business Intelligence/Big Data, and Microsoft CRM. Our strategy is a smart balance between business thinking and technology expertise. We solve complex business and technical problems with cutting-edge technologies, innovative approaches and modern design. We attract and retain world-class talent providing them with superior opportunities for further professional development. Customers complimented EastBanc Technologies for quality and comprehensiveness of services, turnkey solutions, performance, and no delivery issues.
Group type: Organisation (No members)


Follow on   Twitter   Google+   LinkedIn

Comments and Discussions

 
SuggestionISAPI Folder PinmemberZeBobo517-Apr-14 21:40 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web04 | 2.8.140827.1 | Last Updated 17 Apr 2014
Article Copyright 2014 by EastBancTech
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid