这是C#ASP.NET通用处理程序冗余变量中的主要错误吗?

时间:2019-01-23 03:25:03

标签: javascript c# asp.net ihttphandler

在“ 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”

1 个答案:

答案 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);
}