Reputation: 11711
I have a page with this method in CreateTicket.aspx.cs:
[WebMethod()]
public static string Categories()
{
var business = new CategoryBusiness();
var categories = business.ListRootCategories();
return categories.Json();
}
And the javascript/jquery code on the page (same page, .aspx):
function LoadRootCategories() {
PageMethod("CreateTicket.aspx", "Categories", [], LoadCategoriesSucceded, LoadCategoriesFailed);
}
function PageMethod(page, fn, paramArray, successFn, errorFn)
{
//Create list of parameters in the form:
//{"paramName1":"paramValue1","paramName2":"paramValue2"}
var paramList = '';
if (paramArray.length > 0)
{
for (var i=0; i<paramArray.length; i+=2)
{
if (paramList.length > 0) paramList += ',';
paramList += '"' + paramArray[i] + '":"' + paramArray[i+1] + '"';
}
}
paramList = '{' + paramList + '}';
//Call the page method
$.ajax({
type: "POST",
url: page + "/" + fn,
contentType: "application/json; charset=utf-8",
data: paramList,
dataType: "json",
success: successFn,
error: errorFn
});
}
Running it on firebug, I get the following error on console:
500 Internal Server Error
Unknown web method Categories.
[ArgumentException: Unknown web method Categories.
Parameter name: methodName]
System.Web.Script.Services.WebServiceData.GetMethodData(String methodName) +517489
System.Web.Handlers.ScriptModule.OnPostAcquireRequestState(Object sender, EventArgs eventArgs) +168
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
Why is this happening?
Upvotes: 3
Views: 7726
Reputation: 11711
I resolved this problem.
What was happening? Something stupid (as usual):
Upvotes: 6
Reputation: 88796
If you have .NET 3.5 or newer, you can also set up a WCF service.
There's a quick guide on CodeProject on how to set up the OperationsContract and DataContract annotations on your classes in order to create said service.
Upvotes: 0
Reputation: 88796
Does CreateTicket.aspx inherit from WebService?
Even if it does, your class should also have the ScriptService attribute on it, so that .NET generates additional classes to assist in calling it from JavaScript.
Note: This only applies to non-WCF web services. WCF adds in its own attributes for doing web services.
Upvotes: 0