Речь идет о запутанном кластере XHR и WebMethod (asmx). Шаблон прост, я делаю вызовы через XHR в Webmethod, но кажется, что WebMethod синхронизирован не async. Мне просто нужно сделать этот переход асинхронным. Я ищу и ищу (может быть, не так хорошо в поиске), но не смог найти ничего, что могло бы решить эту тайну.Как сделать асинхронный вызов webservice в C#?
Вот, как я делает звонки через XHR:
$.ajax = {
pool: [],
call: function(settings, onSuccess, onFailure) {
var xhr = new XMLHttpRequest();
xhr.open(settings.type, settings.location, settings.async);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
var result = xhr.responseXML.xml.toString();
onSuccess($.Encoder.htmlDecode(result));
}
};
$.ajax.pool.push(xhr);
xhr.send(null);
return xhr;
}
}
Тогда:
$.ajax.call({ type: "get", location: "Index.asmx/RaiseCallbackEvent?eventArgument=ramiz.uddin" , async: true }, function(e) {}, function(e){})
вебсервис довольно просто тоже:
записи[WebMethod(EnableSession = true)]
[ScriptMethod(UseHttpGet = true)]
public string RaiseCallbackEvent(string eventArgument)
{
// some logic
return "<say>hello</say>";
}
И некоторые web.config, что позволяет использовать POST, GET:
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
</protocols>
</webServices>
Не могли бы вы направить меня, что я должен сделать для асинхронности?
Спасибо.
Почему бы просто не использовать JQuery Ajax по умолчанию, который является асинхронным по умолчанию http://docs.jquery.com/Ajax/jQuery.ajax - что это вы пытаетесь добавить с вашим методом? –
Это должно что-то сделать с .net, чтобы сделать асинхронный веб-сервис. не Javascript. JQuery хорош, но у нас есть собственный набор клиентской библиотеки, который существует с определенной целью, и это хорошо. –