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

Javascript 这是C#ASP.NET通用处理程序冗余变量中的一个主要错误吗?,javascript,c#,asp.net,ihttphandler,Javascript,C#,Asp.net,Ihttphandler,在“C#Generic Handler”中,会话变量和输入参数变得重复或冗余 在C#中 如果已经存在会话[“X”]变量,并且 如果iHttpHandler的输入为“X”,则 HttpContext.Current.Request.Params[“X”]为 从Ajax返回会话和输入FormData的连接字符串 这不是区别 我用FormData(“X”、“V”)从Ajax向“c#Generic Handler”发送数据 Session已经有了变量“X”,比如Session[“X”]是“Z” 在JS中

在“C#Generic Handler”中,会话变量和输入参数变得重复或冗余

在C#中

如果已经存在会话[“X”]变量,并且

如果iHttpHandler的输入为“X”,则

HttpContext.Current.Request.Params[“X”]为

从Ajax返回会话和输入FormData的连接字符串

这不是区别

我用FormData(“X”、“V”)从Ajax向“c#Generic Handler”发送数据

Session已经有了变量“X”,比如Session[“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”

如果您在
会话中使用cookie,这是预期的行为。查看for
HttpRequest
时,可以看到
Cookies
被添加到
Params
集合中:

private void FillInParamsCollection() {
        _params.Add(this.QueryString);
        _params.Add(this.Form);
        _params.Add(this.Cookies);
        _params.Add(this.ServerVariables);
}

如果将cookie用于
会话
,这是预期的行为。查看for
HttpRequest
时,可以看到
Cookies
被添加到
Params
集合中:

private void FillInParamsCollection() {
        _params.Add(this.QueryString);
        _params.Add(this.Form);
        _params.Add(this.Cookies);
        _params.Add(this.ServerVariables);
}

您的会话cookie是否基于?HttpContext.Current.Request.Form[“X”]为您返回了什么?@JohanP,是的。它有cookie。您的会话cookie是否基于?HttpContext.Current.Request.Form[“X”]为您返回了什么?@JohanP,是的。它有cookies,甚至在《我可能必须尝试各种组合才能看到行为上的差异》中有定义。我无意反驳您的解释,但当我发送QueryString值和formData时,Params并没有将它们混合在一起。我按个人要求得到了这些值。在此处理程序的“请求”中,相同的“变量”值未用作“COOKIE”,而是用作“会话”变量,即“服务器变量”。“Formdata”输入未直接设置为“会话”。如果formData输入和会话具有相同的“键”名称,则会出现此问题。无论什么,无论存在什么,都是存在的,都是正确的。在我经历了由此引发的几个问题之后,我得出的结论是,这可能是一个BUG或设计缺陷,或者是“故意的无知(只有VS设计团队才会知道是否有原因)”,因为这与“计算”的基本原则不一致。“上下文范围”中的变量应始终是唯一的,并且该“变量”的每个新值都将覆盖其所有以前的值(此处未出现)。“VARIABLE”如果是“Array”,那么数组也将在“unique”索引中存储“value”。所以这一定是VS真正关心的问题。它甚至定义在我可能不得不尝试各种组合来观察行为上的差异。我无意反驳您的解释,但当我发送QueryString值和formData时,Params并没有将它们混合在一起。我按个人要求得到了这些值。在此处理程序的“请求”中,相同的“变量”值未用作“COOKIE”,而是用作“会话”变量,即“服务器变量”。“Formdata”输入未直接设置为“会话”。如果formData输入和会话具有相同的“键”名称,则会出现此问题。无论什么,无论存在什么,都是存在的,都是正确的。在我经历了由此引发的几个问题之后,我得出的结论是,这可能是一个BUG或设计缺陷,或者是“故意的无知(只有VS设计团队才会知道是否有原因)”,因为这与“计算”的基本原则不一致。“上下文范围”中的变量应始终是唯一的,并且该“变量”的每个新值都将覆盖其所有以前的值(此处未出现)。“VARIABLE”如果是“Array”,那么数组也将在“unique”索引中存储“value”。所以这一定是VS真正关心的问题。