используйте
ob_start ();
blockquote>в самой верхней части вашего скрипта и
ob_end_flush ( );
blockquote>внизу вашего скрипта. Этот wil включит буферизацию вывода и ваши заголовки будут созданы после того, как страница будет bufferd.
ОБЩИЕ ПРОБЛЕМЫ:
=============== =====
(скопированный ответ из: source )
1) не должно быть никакого выхода (т.е.
echo..
или HTML-коды) перед командойheader(.......);
.2) удалите любое белое пространство (или новую строку) до
и после
?>
тегов.3) ЗОЛОТОЕ ПРАВИЛО! - проверьте, поддерживает ли этот файл php (а также, если вы
include
другие файлы) UTF8 без кодировки спецификации (а не только UTF-8). Это проблема во многих случаях (потому что кодированный файл UTF8 имеет что-то особенное в начале файла php, которое ваш текстовый редактор не показывает) !!!!!!!!!!!4) После
header(...);
вы должны использоватьexit;
5) всегда используйте ссылку 301 или 302:
header("location: http://example.com", true, 301 ); exit;
6) Включить ошибку составление отчетов. И сообщать об ошибке.
7) Если ни одно из вышеизложенных не помогает, используйте перенаправление JAVSCRIPT (однако, сильно не рекомендуемый метод), может быть последним шансом в пользовательских случаях ...:
echo ""; exit;
Чтобы ответить на ваш вопрос, который имеет несколько частей, сначала:
Принимаемые конечные точки MassTransit пересылают сообщение в очередь _error
, когда потребитель генерирует исключение. Создание конечной точки приема в очереди _error
не предлагается и не должно выполняться.
Если вы просто хотите наблюдать, произошла ли ошибка у потребителя, вы можете создать отдельную конечную точку приема (например, в качестве очереди ошибок ) и зарегистрировать пользователя Fault<T>
. MassTransit опубликует сообщение, которое реализует Fault<T>
, которое брокер направит к вашему потребителю через конечную точку приема.
Однако, в зависимости от вашего примера выше, вы отправляете запрос и ожидаете, что клиент знать, произошла ли ошибка. Для этого я бы рекомендовал использовать клиент запросов, который настраивает заголовки сообщений, чтобы возвращать ошибки обратно отправителю запроса. Он также позволяет отправлять ответы. Если вы не хотите ждать ответа или ждать, чтобы увидеть, произошла ли ошибка, вышеупомянутый наблюдатель сбоев - ваш лучший вариант.
Вы можете посмотреть, как использовать клиент запроса здесь: http://masstransit-project.com/MassTransit/usage/request-response.html
Существует также более новый синтаксис с более гибким клиентом запроса, который вы можете видеть через модульные тесты: https://github.com/MassTransit/MassTransit/blob/develop/src/MassTransit.Futures.Tests/Request_Specs.cs#L42