Я хочу создать веб-метод, который принимает список пользовательских объектов (передаваемых через jQuery / JSON).
Когда я запускаю сайт локально, кажется, что все работает. jQuery и ASP.NET и все счастливы. Но когда я ставлю его на один из наших серверов, он взрывается. jQuery получает ошибку 500 после ajax-запроса с ответом:
System.InvalidOperationException: Недопустимое имя метода веб-службы EditCustomObjects.
Вот метод веб-службы:
[WebMethod]
public void EditCustomObjects(int ID, List<CustomObject> CustomObjectList)
{
// Code here
}
И мой код jQuery (который, я думаю, не имеет значения, поскольку, похоже, ошибка происходит на уровне веб-службы):
var data = JSON.stringify({
ID: id,
CustomObjectList: customObjectList
});
$.ajax({
type: "POST",
url: "/manageobjects.asmx/EditCustomObjects",
data: data,
contentType: "application/json; charset=utf-8",
async: false,
dataType: "json",
success: function(xml, ajaxStatus) {
// stuff here
}
});
customObjectList инициализируется так:
var customObjectList = [];
И я добавляю к нему элементы вот так (через цикл):
var itemObject = {
ObjectTitle = objectTitle,
ObjectDescription = objectDescription,
ObjectValue = objectValue
}
customObjectList.push(itemObject);
Так, я здесь что-то не так делаю? Есть ли лучший способ передачи массива данных из jQuery в метод веб-службы ASP.NET? Есть ли способ решить «Недопустимое имя метода веб-службы». ошибка?
К вашему сведению, я запускаю .NET 2.0 на компьютере с Windows Server 2003 и получил код для вышеупомянутого с этого сайта: http://elegantcode.com/2009/02/21/javascript-arrays-via-jquery-ajax-to-an-aspnet-webmethod/
РЕДАКТИРОВАТЬ: Кто-то запросил дополнительную информацию о веб-службе, я бы предпочел не предоставлять весь класс, но вот еще немного, что может помочь:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class ManageObjects : Custom.Web.UI.Services.Service
{
}
Бар