После некоторого прочтения я думаю, что пытался сделать что-то, что не правильно относительно того, как работают методы страницы. Это становится довольно сложно, когда система аутентификации вашего приложения основана на Windows, и эти методы страницы, когда вы вызываете из JavaScript, не будут вызывать обратную передачу и не вызывают HttpModules. Вместо этого он просто вызывает метод этой страницы.
К вашему сведению, у нас был собственный настраиваемый HTTPModule для управления безопасностью. Это происходит еще до того, как возникает любой другой HttpModule, и он не вызывался при вызове метода страницы, поскольку мы не выполняем обратную передачу или даже частичную обратную передачу (так что весь «ниша» HTTPPost отсутствовала). Более того, это привело к выводу, что мы выполняем сервисные вызовы без какой-либо аутентификации и потенциально является для нас большой проблемой безопасности.
Суть в том, что это был плохой дизайн, хорошо говоря, что я хотел бы упомянуть о решении / обходном пути, к которому мы пришли, и вот что мы сделали. Итак, единственный вариант, который у нас был, - это сделать обратную передачу, поддерживая пользовательский интерфейс, и мы хотели обновить сообщение метки асинхронно, и мы добились этого, взломав с помощью Sys.Application.add_init.
<script language="javascript" type="text/javascript" >
Sys.Application.add_init(function() {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest);
});
function beginProcess() {
processCurrentItem();
}
var currentItem = 0;
function processCurrentItem() {
if (currentItem < 5) {
currentItem = currentItem + 1;
__doPostBack('updatePanel', currentItem);
}
}
function endRequest() {
processCurrentItem();
}
</script>
Разметка, которую мы установили, была довольно простой, с меткой на панели обновлений и кнопкой, которая вызывает функцию beginProcess (). Наконец, в OnLoad у нас был следующий код
protected override void OnLoad(EventArgs e)
{
if (this.IsPostBack)
{
this.lblLabel.Text = "text you may wanna update with";
// Call the Method you may wanna call
// also you may use Request["__EVENTARGUMENT"] to know who caused the
// postback and Request["__EVENTTARGET"] to access the argument you may
// have passed in.
}
}
И это решение больше не использует методы JavaScript Page. И на основании этого решения, если кто-то сочтет, что я что-то здесь упускаю, или считает, что есть какой-то другой способ сделать это, тогда обновите этот пост своими предложениями.