Существуют ли какие-либо особые соображения при попытке считывания данных из 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.