在“ C#通用处理程序”中,会话变量和输入参数变得重复或冗余。
在C#中,
如果已经有一个Session [“ X”]变量,并且
如果输入到iHttpHandler的输入是“ X”,则
HttpContext.Current.Request.Params [“ X”]是
从Ajax返回Session和Input FormData的串联字符串。
没有区别。
我正在使用FormData(“ X”,“ V”)将数据从Ajax发送到“ c#通用处理程序”。
会话已经具有变量“ X”,说会话[“ X”]为“ Z”;
在JS中:
function f(ipaddr) {
var formData = new FormData();
formData.set("X", "V");
var url = window.location.origin + "/api/generichandlerapi.ashx";
$.ajax({
type: 'post',
url: url,
data: formData,
dataType: "json",
success: function (response) {
}
});
}
内部处理程序:
string C;
Session["X"] = "Z";
C = HttpContext.Context.Request.Params["X"];
C应该只有“ V”
但返回
“ V,Z”
答案 0 :(得分:2)
如果您对Session
使用cookie,这是预期的行为。当您查看HttpRequest
的{{3}}时,可以看到Cookies
被添加到Params
集合中:
private void FillInParamsCollection() {
_params.Add(this.QueryString);
_params.Add(this.Form);
_params.Add(this.Cookies);
_params.Add(this.ServerVariables);
}