我正在使用c#编写授权管理模块。凭证将从http标头中提取。 我的问题是: 我只定义了http标头的外观(txt文件)。所以我需要在代码中准备标题以进行测试,(在default.aspx中向标题添加键和值):
Response.AppendHeader("contractualData", "03346-b0-t-vg");
Response.AppendHeader("Location", "Default.aspx");
Response.Redirect("page2.aspx");
,而且当我用
读取page2.aspx pageload中的标题时Request.Headers["contractualData"];
我看不到新添加的键和值。(我可以看到它在IEWatch的响应头中,但我无法通过request.headers读取它。我也尝试过Response.AddHeader或Response.Headers.Add同样的行为!)我该怎么办?
一般情况下,如何准备自定义标头并使用该标头测试我的代码?
答案 0 :(得分: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();
}
答案 1 :(得分:0)
除非我让事情落后 - 在发送页面请求用于发送标题。在接收页面中,应该使用请求来读取它们。