Является ли это основной ошибкой в ​​C # ASP.NET универсальных обработчиков избыточных переменных? - PullRequest
0 голосов
/ 23 января 2019

В «Универсальном обработчике C #» переменные сеанса и входные параметры становятся дублирующимися или избыточными.

В C #

, если переменная Session ["X"] уже существует, и

если вход в iHttpHandler равен "X", то

HttpContext.Current.Request.Params ["X"] равен

, возвращая объединенную строку как Session, так и Input FormData изAjax.

Разница не различается.

Я отправлял данные в "C # Generic Handler" из Ajax с FormData ("X", "V").

Сессия уже имеет переменную как "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"

1 Ответ

0 голосов
/ 23 января 2019

Ожидаемое поведение, если вы используете куки для Session.Когда вы посмотрите на исходный код для HttpRequest, вы увидите, что Cookies добавляется в коллекцию Params:

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