Это все, что я понял об этой ошибке за последние 2 года:
upstream sent too big header while reading response header from upstream
- это общий способ nginx сказать: «Мне не нравится то, что я вижу»
3: Посмотрите журналы ошибок над сообщением, идет ли потоковая передача с зарегистрированными строками, предшествующими сообщению? PHP message: PHP Notice: Undefined index:
Пример фрагмента из цикла мой файл журнала:
2015/11/23 10:30:02 [error] 32451#0: *580927 FastCGI sent in stderr: "PHP message: PHP Notice: Undefined index: Firstname in /srv/www/classes/data_convert.php on line 1090
PHP message: PHP Notice: Undefined index: Lastname in /srv/www/classes/data_convert.php on line 1090
... // 20 lines of same
PHP message: PHP Notice: Undefined index: Firstname in /srv/www/classes/data_convert.php on line 1090
PHP message: PHP Notice: Undefined index: Lastname in /srv/www/classes/data_convert.php on line 1090
PHP message: PHP Notice:
2015/11/23 10:30:02 [error] 32451#0: *580927 FastCGI sent in stderr: "ta_convert.php on line 1090
PHP message: PHP Notice: Undefined index: Firstname
вы можете видеть в 3-й строке (из 20 предыдущих ошибок) ограничение буфера было достигнуто, нарушено, и следующий поток записал поверх Это. Затем Nginx закрыл соединение и вернул 502 клиенту.
2: зарегистрировать все заголовки, отправленные по запросу, просмотреть их и убедиться, что они соответствуют стандартам (nginx не разрешает удалять / истекать cookie-файлы старше 24 часов, отправляя недопустимую длину содержимого, поскольку сообщения об ошибках были буферизованы до content countted ...)
примеры включают в себя:
<?php
//expire cookie
setcookie ( 'bookmark', '', strtotime('2012-01-01 00:00:00') );
// nginx will refuse this header response, too far past to accept
....
?>
и это:
<?php
header('Content-type: image/jpg');
?>
<?php //a space was injected into the output above this line
header('Content-length: ' . filesize('image.jpg') );
echo file_get_contents('image.jpg');
// error! the response is now 1-byte longer than header!!
?>
1: проверить или создать журнал сценариев, чтобы обеспечить ваш поток достигает правильной конечной точки и не завершается до завершения.
Итак, я знаю, что все продемонстрировали базовый подход на стороне клиента, и это нормально, но я хотел, по крайней мере, показать решение для обработки определенного события на стороне клиента на сервере.
Давайте посмотрим на код и рассмотрим его по частям.
Поскольку ASP.Net TextBox не предоставляет серверное событие для OnBlur, вам придется делать это вручную. К счастью, этого довольно легко достичь. Предположим, у вас есть небольшой кусочек кода на странице .aspx. Вы хотите обновить сторону сервера управления Label всякий раз, когда TextBox теряет фокус.
<asp:Label ID="lblOnBlur" runat="server">On Blur Example</asp:Label><br />
<asp:TextBox ID="tbOnBlur" runat="server" ClientIDMode="Static" /><br />
<asp:Label ID="lblOutput" runat="server" />
ASP.Net имеет встроенную клиентскую функцию , которая вызывается для запуска обратных передач, которая принимает два параметра:
Вы можете просто подключить событие в разметке, добавив следующий атрибут и значение для вашего TextBox:
onblur="__doPostBack('tbOnBlur','OnBlur');"
Однако, у инфраструктуры есть простой способ сгенерировать этот скрипт для вашей серверной стороны. В вашем методе Page_Init просто добавьте вызов к GetPostBackEventReference
и назначьте его атрибуту «onblur» для вашего элемента управления следующим образом:
protected void Page_Init(object sender, EventArgs e)
{
var onBlurScript = Page.ClientScript.GetPostBackEventReference(tbOnBlur, "OnBlur");
tbOnBlur.Attributes.Add("onblur", onBlurScript);
}
При стандартных событиях управления сервером Событие соединения и вызова обрабатывается автоматически для вас путем реализации IPostBackEventHandler
. Это много работы для одноразового решения, поэтому давайте просто обработаем его вручную, проверив параметры запроса.
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
var ctrlName = Request.Params[Page.postEventSourceID];
var args = Request.Params[Page.postEventArgumentID];
HandleCustomPostbackEvent(ctrlName, args);
}
}
private void HandleCustomPostbackEvent(string ctrlName, string args)
{
//Since this will get called for every postback, we only
// want to handle a specific combination of control
// and argument.
if (ctrlName == tbOnBlur.UniqueID && args == "OnBlur")
{
lblOutput.Text = "On Blur Event Handled Server Side!" + DateTime.Now;
}
}
В конце концов, не очень сложно моделировать события на стороне сервера, если вы не возражаете немного покопаться в фреймворке.
Надеюсь, это поможет!
Приветствия,
Джош
if (!Page.IsPostBack)
{
txtName.Attributes.Add("onblur","alert('Hello world')");
}
Почему бы тебе не использовать это? Lostfocus работает так же с:
OnTextChanged="TextBox_TextChanged"