0

Моей целью является отправка моих собственных элементов заголовка HTTP-ответа с использованием Server.TransferRequest.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 

Пожалуйста, помогите мне, чтобы получить ожидаемый заголовок. Thanks

ответ

0

Решено. Я создал класс, наследующий 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 и изменить ответ, как я хочу

Смежные вопросы