У меня не было никаких проблем, используя метод ниже:
Javascript
var dataParam='{"param":"1"}'; //or whatever data you may be sending or not sending
$.ajax({
type : "POST",
url : myHomeUrl + '/SendDataVoid',
contentType : "application/json; charset=utf-8",
data : dataParam,
datatype : "json",
}).done(function (data) {
alert('success');
}).fail(function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.getResponseHeader("error"));
});
C#
[WebMethod]
public static void SendDataVoid(string param)
{
try
{
//do stuff here
}
catch (Exception ex)
{
System.Web.Services.WebService wsError = new System.Web.Services.WebService();
wsError.Context.Response.StatusCode = 500;
wsError.Context.Response.AppendHeader("error", ex.Message);
}
}
Это позволяет вам быть в состоянии послать фактическая ошибка msg back i вместо общей ошибки «Внутренний сервер».
'WebMethod' [больше не поддерживается] (http://johnwsaunders3.wordpress.com/2011/12/07/more-reasons-to-not-use-asmx-services-in-new-code/) от Microsoft. Возможно, вы захотите ознакомиться с технологией замены для служб на основе REST, [ASP.NET Web API] (http://www.asp.net/web-api). Он имеет более чистую модель и поддерживается Microsoft. – mason