Server.TransferRequest не отправляет переданный заголовок
Моя цель - отправлять свои собственные элементы заголовка ответа HTTP с помощью Server.TransferRequest.
Я пытаюсь сделать что-то подобное:
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
var headers = new NameValueCollection
{
{"ErrorUrl", Context.Request.RawUrl},
{"ErrorCode", code.ToString()}
};
Server.TransferRequest("~400.html", true, "GET", headers);
Но Chrome показывает меня в заголовках ответа:
Accept-Ranges:bytes
Content-Length:573
Content-Type:text/html
Date:Wed, 10 Aug 2016 14:32:36 GMT
ETag:"a9d0dad4fbd1d11:0"
Last-Modified:Wed, 29 Jun 2016 11:46:10 GMT
X-Content-Type-Options:nosniff
X-Frame-Options:deny
X-SourceFiles:=?UTF-8?B?RDpcS0ZTXE1haW5cUHJvZHVjdFxLREMuVXNlcldlYlxLREMuVXNlcldlYi5XZWJSb2xlXHNyY1xWaWV3c1xlcnJvclxlbi1VU1w0MDMuaHRtbA==?=
X-XSS-Protection:1
Пожалуйста, помогите мне получить ожидаемый заголовок. Спасибо
1 ответ
Решаемые. Я создал класс наследовать IHttpModule. Я добавил событие OnPreSendRequestHeaders. И у меня есть доступ к заголовкам, которые я отправил.
public class HeadersModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += OnPreSendRequestHeaders;
}
private void OnPreSendRequestHeaders(object sender, EventArgs e)
{
HttpContext currentContext = HttpContext.Current;
string errorUrl = currentContext.Request.Headers["ErrorUrl"];
}
public void Dispose()
{
}
}
Также я добавил имя в файл web.config. (См. Примеры там https://msdn.microsoft.com/en-us/library/aa719858(v=vs.71).aspx)
Эта проблема возникла из-за того, что Server.TransferRequest выполняет асинхронное выполнение указанного URL-адреса с использованием указанного метода HTTP и заголовков. (См. https://msdn.microsoft.com/en-us/library/aa344901(v=vs.110).aspx)
Теперь я могу использовать errorUrl и изменять ответ так, как хочу