Click here to Skip to main content
15,868,009 members
Articles / Web Development / ASP.NET

Web Service and Script Service

Rate me:
Please Sign up or sign in to vote.
5.00/5 (1 vote)
26 Jan 2013CPOL1 min read 61.5K   579   17   11
Web service and script service

Most of you are familiar with writing a web service using C#. Visual Studio provides the project template which easily creates a web service for you.

Image 1

Image 2

I’m sure you may know how to call this web service using C#. But do you know how to call the web service using client side scripts such as JavaScript? There are various ways to do this. I will demonstrate this using jQuery$.ajax() function.

JavaScript
function callSvc() {
    $.ajax({
        type: "POST",
        url: "Service1.asmx/HelloWorld",
        data: "",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(data, status) { alert(data); },
        error: function(request, status, error) { alert(request); alert(status); alert(error); }
    });
} 

When you call the HelloWorld() service, by default you will get “500 – Internal server error” error message.

Image 3

This error is raised because you haven’t configured this service to access using client side scripts. When you check the responseText , you will notice that it says “Only Web services with a [ScriptService] attribute on the class definition can be called from script.

To resolve this, you have to configure your web service with [ScriptService] attribute.

C#
[System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService

When adding [ScriptService] attribute to the web service, it gets automatically handled by the ScriptHandlerFactory and creates a JavaScript proxy class for the web service. That means, you will be able to call the web service from the client side script in the same way as you call it from the code behind. You can view the generated proxy class by using the following command:

http://<URL>/SimpleWebService.asmx/js
http://<URL>/SimpleWebService.asmx/jsdebug

Compare the generated proxy class with the service description (http://<URL>/Service1.asmx?WSDL) and let me know what you noticed.

License

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


Written By
Technical Lead Eyepax IT Consulting (Pvt) Ltd.
Sri Lanka Sri Lanka
Having more than 9 year hands-on industry experience in software development
Responsible for designing, implementing and managing complex software systems with stringent up-time requirement.

Visit my blog

Comments and Discussions

 
AnswerYou can delete ContentType. I do it, and success. Pin
baokhang2623-Aug-16 5:27
baokhang2623-Aug-16 5:27 
GeneralExcellent Article Pin
Ezz Khayyat18-Oct-15 19:23
professionalEzz Khayyat18-Oct-15 19:23 
GeneralRe: Excellent Article Pin
Tharaka MTR26-Oct-15 21:46
professionalTharaka MTR26-Oct-15 21:46 
Questionwell done Pin
wshcdr4-Sep-13 16:25
wshcdr4-Sep-13 16:25 
AnswerRe: well done Pin
Tharaka MTR4-Sep-13 22:50
professionalTharaka MTR4-Sep-13 22:50 
QuestionThe zipped solution worked Pin
fdogo10-Jan-13 17:15
professionalfdogo10-Jan-13 17:15 
AnswerRe: The zipped solution worked Pin
Tharaka MTR10-Jan-13 17:30
professionalTharaka MTR10-Jan-13 17:30 
QuestionCan't use the script just out of the block Pin
Thanasis I.8-Jan-13 13:16
Thanasis I.8-Jan-13 13:16 
AnswerRe: Can't use the script just out of the block Pin
Tharaka MTR10-Jan-13 6:55
professionalTharaka MTR10-Jan-13 6:55 
GeneralRe: Can't use the script just out of the block Pin
Thanasis I.22-Jan-13 3:49
Thanasis I.22-Jan-13 3:49 
GeneralRe: Can't use the script just out of the block Pin
Tharaka MTR22-Jan-13 7:24
professionalTharaka MTR22-Jan-13 7:24 

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

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