2012-10-04 78 views
1

我正在用c#编写授权管理模块。凭据将从http头中提取。 我的问题是: 我只定义了http标题的样子(txt文件)。所以我需要在测试的代码准备的标题,(添加键和值到Default.aspx中的报头):创建自定义http头测试 -

Response.AppendHeader("contractualData", "03346-b0-t-vg"); 
Response.AppendHeader("Location", "Default.aspx"); 
Response.Redirect("page2.aspx"); 

和比当我读page2.aspx页面加载头与

Request.Headers["contractualData"]; 

我看不到新添加的键和值(我可以看到它在IEWatch的响应头中,但是我不能用request.headers读它,我也尝试过使用Response.AddHeader或Response.Headers。添加相同的行为!)我应该怎么做?

一般来说,我该如何准备一个自定义标题并使用该标题测试我的代码?

回答

1

我找到了解决方案。创建请求标题并发布它。以下代码有效:

protected void Page_Load(object sender, EventArgs e) 

     { 


      string path = Request.Url.Scheme + "://" + Request.Url.Host + ":" + Request.Url.Port + "/"; 

      myRedirect(path + "TestRedirectTo.aspx", "test", "testValue"); 

     } 

     protected void myRedirect(string url, string headerName, string headerValue) 

     { 

      Response.Clear(); 

      System.Net.WebRequest request = System.Net.WebRequest.Create(url); 

      request.Headers.Add(headerName, headerValue); 

      System.Net.WebResponse response = request.GetResponse(); 

      System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream(), System.Text.Encoding.Default); 


      string content = sr.ReadToEnd(); 

      sr.Close(); 

      Response.Write(content); 

      sr.Close(); 

      Response.End(); 

     } 
0

除非我让事情反向 - 在发送页面请求用于发送标题。在接收页面请求中应该用来读取它们。

+0

这听起来不对。你能解释一下你的意思吗? Request.Headers.Add()给出System.PlatformNotSupportedException:此平台不支持操作。 – EngelbertCoder