0

내 목표는 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); 

을하지만 크롬은 응답 헤더에 저를 보여줍니다 :

나는 그런 식으로 뭔가를 할 노력하고있어

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 

이 예상 헤더를 얻을 도와주세요. 감사합니다

답변

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 파일에 이름을 추가했습니다. Server.TransferRequest가 지정한 HTTP 헤더 및 방법을 사용하여 특정 URL의 비동기 실행을 수행하기 때문에

이 문제가 발생 (존재 https://msdn.microsoft.com/en-us/library/aa719858(v=vs.71).aspx 예 참조).

가 지금은 errorUrl를 사용하고 내가

을 원하는대로 응답을 수정할 수 있습니다 ( https://msdn.microsoft.com/en-us/library/aa344901(v=vs.110).aspx 참조)
관련 문제