Ошибка «Неизвестный веб-метод» после Server.Transfer - PullRequest
1 голос
/ 09 декабря 2008

Я использую System.Web.Services.WebMethodAttribute , чтобы сделать публичный статический метод страницы ASP.NET, вызываемой из клиентского скрипта:

test.aspx.cs

[System.Web.Services.WebMethod]
public static string GetResult()
{
    return "result";
}

test.aspx

<asp:ScriptManager ID="sm" runat="server" EnablePageMethods="true" />

<script type="text/javascript">
    alert(PageMethods.GetResult());
</script>

Метод работает как следует, но если я загружаю test.aspx с

Server.Transfer("test.aspx");

Я получаю сообщение об ошибке "Неизвестный веб-метод". После

Response.Redirect("test.aspx");

страница работает хорошо.

Подскажите, пожалуйста, в чем причина ошибки и как ее можно избежать? Большое спасибо!

Ответы [ 3 ]

1 голос
/ 09 декабря 2008

Server.Transfer передает обработку страницы (на уровне сервера) на указанную вами страницу, однако браузер считает, что вы все еще находитесь на исходной странице:

Так, например, вы находитесь на start.aspx и в коде позади вы имеете Server.Transfer ("test.aspx");

Ваш браузер считает, что вы все еще используете start.aspx, и javascript будет отправлять запросы методам страницы на start.aspx.

С помощью Response.Rirectirect ваш браузер знает, что вы сейчас на test.aspx, и запросы отправляются правильно.

1 голос
/ 09 декабря 2008

Где вы получаете сообщение об ошибке - сервер или клиент?

Если это на клиенте, посмотрите, что он пытается сделать. Я подозреваю, что вы обнаружите, что он просит исходную страницу ответить, а не test.aspx.

0 голосов
/ 09 декабря 2008

Кажется, вызов set_path решает проблему:

<script type="text/javascript">
    PageMethods.set_path("test.aspx");
    alert(PageMethods.GetResult());
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...