【发布时间】:2009-05-13 04:34:45
【问题描述】:
我遇到了一个奇怪的问题:
我正在加密 cookie 的内容。
当我在 Visual Studio 中运行我的代码时,它运行良好,但给了我“错误请求,HTTP 错误 400。请求格式错误。”当我从服务器运行它时。
这里是加密类 Encrypt Cook.cs,位于 app_code 中:
public class EncryptCook
{
public EncryptCook()
{
//
// TODO: Add constructor logic here
//
}
public string EncryptString(string data)
{
try
{
string encryptString = "";
if (data != "")
{
char a;
int key = Convert.ToInt16(DateTime.Now.Day);
int j = 0;
for (int i = 0; i < data.Length; i++)
{
j = (int)data[i];
j = j + key;
a = (char)j;
encryptString = encryptString + Convert.ToString(a);
}
}
return encryptString;
}
catch
{
return "";
}
}
public string DeEncryptString(string data)
{
try
{
string encryptString = "";
if (data != "")
{
char a;
int j = 0;
int key = Convert.ToInt16(DateTime.Now.Day);
for (int i = 0; i < data.Length; i++)
{
j = (int)data[i];
j = j - key;
a = (char)j;
encryptString = encryptString + Convert.ToString(a);
}
}
return encryptString;
}
catch
{
return "";
}
}
很简单,它接受一个字符串,从中提取字符并将该字符替换为另一个字符,例如,给定“a”并且今天的日期是 13,它将用“a”之后的第 13 个字符替换它,即“m”。
这是我的登录控件:
protected void Button1_Click(对象发送者,EventArgs e) { //检索用户的代码,工作正常 EncCook 厨师=新 EncCook(); HttpCookie cookie = new HttpCookie("登录状态"); cookie["userid"] =cook.EncryptString(name); cookie["用户名"] = cook.EncryptString(医生); cookie["email"] = cook.EncryptString(email); cookie["address"] = cook.EncryptString(address); Response.Cookies.Add(cookie); }好吧,这段代码在本地机器上运行良好,但给我一个“错误的请求 HTTP 错误 400。请求格式错误。”错误。
我认为这是因为编码,但我不确定,如果它今天是 20 那么 ~ + 20 看起来像一个盒子字符。
谢谢
【问题讨论】:
-
尝试使用 IIS 在您的计算机上本地运行它,而不是 Visual Studios 开发网络服务器。您可能会遇到与您的服务器相同的错误。