【发布时间】:2013-07-16 15:09:18
【问题描述】:
您好,我在 C# 中实现了以下代码,用于捕获标头属性。 出于某种原因,我只获取名字的数据,其余字段显示为空。我知道它们有值,但由于某种原因,它们显示为 null。
// Load ServerVariable collection into NameValueCollection object.
System.Collections.Specialized.NameValueCollection headerdetails = Request.Headers;
List<string> requiredHeaders = new List<string>();
requiredHeaders.Add("FirstName");
requiredHeaders.Add("MiddleName");
requiredHeaders.Add("LastName");
requiredHeaders.Add("email");
// Get names of all keys into a string array.
String[] arr1 = headerdetails.AllKeys;
for (int i = 0; i < arr1.Length; i++)
{
if (requiredHeaders.Contains(arr1[i]))
{
if (arr1[i] == "FirstName")
{
String[] arr2 = headerdetails.GetValues(arr1[i]);
for (int values = 0; values < arr2.Length; values++)
{
string firstname = Server.HtmlEncode(arr2[values]);
Session["firstName"] = firstname;
}
}
if (arr1[i] == "MiddleName")
{
String[] arr2 = headerdetails.GetValues(arr1[i]);
for (int values = 0; values < arr2.Length; values++)
{
string middlename = Server.HtmlEncode(arr2[values]);
Session["middleName"] = middlename;
}
}
if (arr1[i] == "LastName")
{
String[] arr2 = headerdetails.GetValues(arr1[i]);
for (int values = 0; values < arr2.Length; values++)
{
string lastname = Server.HtmlEncode(arr2[values]);
Session["lastName"] = lastname;
}
}
if (arr1[i] == "email")
{
String[] arr2 = headerdetails.GetValues(arr1[i]);
for (int values = 0; values < arr2.Length; values++)
{
string email = Server.HtmlEncode(arr2[values]);
Session["emailID"] = email;
}
}
【问题讨论】:
-
您需要来自访问您网站的客户端的这些标头?为什么?这些不是标准标头,您有什么机制来确保客户端会发送这些标头?对于手头的实际问题,您做了哪些调试?您是否确保客户端在请求中发送这些标头?当你在服务器端单步执行这段代码时,哪里出错了?
-
是的,客户端正在发送这些标头。我的日志中也记录了它们。
标签: c# asp.net .net http-headers