Изменить:
После проверки вашей проблемы, вот причина, почему она не работает:
Когда вы добавляете ServiceReference в ScriptManager> раздел Services вручную на странице. Добавлена 1 директива включения клиентского скрипта.
например:
<script src="TestService.asmx/jsdebug" type="text/javascript"></script>
или
<script src="TestService.asmx/js" type="text/javascript"></script>
, которые предоставляют вам доступ к вашему Frontend.Web.YourScriptMethods ,
Теперь, когда вы добавляете ServiceReference в асинхронной обратной передаче - Он не добавляет этот клиентский скрипт, включая . Таким образом, вы получаете ошибку клиентского скрипта - метод не определен.
Но я нашел обходной путь для этого; (не знаю, как это правильно сделать)
if (ScriptManager.GetCurrent(this).IsInAsyncPostBack)
{
ScriptManager.RegisterClientScriptInclude(this, this.GetType(), "testservice", "TestService.asmx/js");
}
Вы можете заменить путь «TestService.asmx» в соответствии с вашим проектом / веб-службой.
Таким образом, вы можете достичь того, что вы хотите.
Надеюсь, это поможет,
Крунал Мевада
Старые ответы:
Использовать следующее:
if (ScriptManager.GetCurrent(this).IsInAsyncPostBack)
{
ScriptManager.GetCurrent(this).Services.Add(new ServiceReference("~/Service.asmx"));
}