Извлечение типа ввода = пароль Request.Form ["strPassword"] дает ноль - PullRequest
0 голосов
/ 28 августа 2009

Существуют ли какие-либо особые соображения при попытке считывания данных из HTML-формы, где элементом является тип ввода = "Пароль"? Когда страница ColdFusion отправляет мой обработчик с данными формы, я получаю нулевое значение для пароля вместо введенного значения.

Вот ключевая строка из большего блока ниже:

string password = context.Request.Form ["strPassword"];

У меня есть файл кода HTTPHandler.ashx, который выполняет загрузку файла после публикации. Вот ключевой фрагмент этого кода:

        string username = context.Request.Form["strUsername"];
        if (String.IsNullOrEmpty(username))
        {
            IdentifyInvoker = GetUserInfo();
            brokerService = new Broker.FileService();
        }
        else
        {
            string password = context.Request.Form["strPassword"];
            string domain = context.Request.Form["strDomain"];
            IdentifyInvoker = GetInvokerInfoFromForm(username, password, domain);
            brokerService = new Broker.FileService(username,password,domain);
        }

Форма, из которой размещен вышеуказанный код (из ColdFusion), выглядит следующим образом:

<b>User Name</b> <input type="text" name="strUsername" id="strUsername" size="13" />   
<b>Password</b> <input type="Password" name="strPassword" id="strPassword" size="15" />   
<b>Domain</b> <input type="text" name="strDomain" id="strDomain" size="13" value="cbmiweb" />   

Мне удалось отловить это с помощью отладчика, и я был шокирован, увидев это после этого: string password = context.Request.Form ["strPassword"];

... password = null

В ближайшем окне достаточно точно:

?context.Request.Form["strPassword"]
null

Если я проверю всю коллекцию Form в отладчике, то увижу правильные значения, размеченные (разделенные символом &), и ни один из важных элементов данных не будет нулевым (но, как ни странно, данные содержат знак плюс перед знак равенства)! Вот фрагмент из окна immed:

& strUsername = johna & strPassword + = xxxxxxxx & strDomain + = cbmiweb}

У меня есть клиент ASP.NET, который отправляет этот же HTTPHandler и работает нормально. Здесь данные той же формы показаны без мешающих знаков ПЛЮС:

& strUsername = johna & strPassword = xxxxxxxx & strDomain = cbmiweb}

Есть какие-нибудь идеи о том, что вызывает это и как извлечь данные формы, если они отформатированы с помощью промежуточных знаков PLUS?

EDIT: Как форма ASP.NET, так и форма ColdFusion указывают enctype = "multipart / form-data", но последняя встраивает эти знаки PLUS.

1 Ответ

1 голос
/ 29 августа 2009

Знак «плюс» - это проблема, ее не должно было быть, это ваш запрос переадресации Coldfusion на вашу страницу или он использует для этого внутренний механизм http-запросов?

Знак «плюс» появляется из-за пробелов, пожалуйста, проверьте в своем Coldfusion, не приводила ли какая-либо конкатенация строк к появлению пробелов в ваших опубликованных данных?

...